PostgreSQL的LIKE操作符是用來反對使用通配符的模式匹配的文本值。如果搜索表達式可以匹配的模式表達式,LIKE運算將返回true,也就是1。
有兩個通配符與LIKE運算符一起使用:
百分號 (%)
下劃線 (_)
百分號表示零個,一個或多個數字或字符。下劃線代表一個單一的數字或字符。這些符號可以被組合使用。
那麼,如果這兩個標志結合LIKE子句中不使用LIKE的行為就象等於運算符。
%和_的基本語法如下:
SELECT FROM table_name WHERE column LIKE 'XXXX%' or SELECT FROM table_name WHERE column LIKE '%XXXX%' or SELECT FROM table_name WHERE column LIKE 'XXXX_' or SELECT FROM table_name WHERE column LIKE '_XXXX' or SELECT FROM table_name WHERE column LIKE '_XXXX_'
可以結合使用AND或OR運算的N多的條件。XXXX在這裡可以是任何數字或字符串值。
下面一些例子顯示LIKE子句以'%'和'_'運算符具有不同的部分:
Postgres的LIKE只字符串比較。因此需要顯式地將字符串作為整數列在上面的例子中。
讓我們舉一個現實的例子,考慮表公司有如下記錄:
# select * from COMPANY; id | name | age | address | salary ----+-------+-----+-----------+-------- 1 | Paul | 32 | California| 20000 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall| 45000 7 | James | 24 | Houston | 10000 (7 rows)
以下是一個例子,它會從公司表顯示年齡以2開始所有記錄:
testdb=# SELECT * FROM COMPANY WHERE AGE::text LIKE '2%';
這將產生以下結果:
id | name | age | address | salary ----+-------+-----+-------------+-------- 2 | Allen | 25 | Texas | 15000 3 | Teddy | 23 | Norway | 20000 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 6 | Kim | 22 | South-Hall | 45000 7 | James | 24 | Houston | 10000 8 | Paul | 24 | Houston | 20000 (7 rows)
以下是一個例子,它會顯示所有記錄從公司表的地址將有一個連字符( - ),裡面的文字:
testdb=# SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%';
這將產生以下結果:
id | name | age | address | salary ----+------+-----+-------------------------------------------+-------- 4 | Mark | 25 | Rich-Mond | 65000 6 | Kim | 22 | South-Hall | 45000 (2 rows)