PostgreSQL的LIKE操作符是用来反对使用通配符的模式匹配的文本值。如果搜索表达式可以匹配的模式表达式,LIKE运算将返回true,也就是1。
yiibai.com
有两个通配符与LIKE运算符一起使用: www.yiibai.com
百分号 (%) www.yiibai.com
下划线 (_)
百分号表示零个,一个或多个数字或字符。下划线代表一个单一的数字或字符。这些符号可以被组合使用。 www.yiibai.com
那么,如果这两个标志结合LIKE子句中不使用LIKE的行为就象等于运算符。
www.yiibai.com
%和_的基本语法如下:
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_' yiibai.com
可以结合使用AND或OR运算的N多的条件。XXXX在这里可以是任何数字或字符串值。 yiibai.com
下面一些例子显示LIKE子句以'%'和'_'运算符具有不同的部分: www.yiibai.com
Statement | Description |
---|---|
WHERE SALARY::text LIKE '200%' | Finds any values that start with 200 |
WHERE SALARY::text LIKE '%200%' | Finds any values that have 200 in any position |
WHERE SALARY::text LIKE '_00%' | Finds any values that have 00 in the second and third positions |
WHERE SALARY::text LIKE '2_%_%' | Finds any values that start with 2 and are at least 3 characters in length |
WHERE SALARY::text LIKE '%2' | Finds any values that end with 2 |
WHERE SALARY::text LIKE '_2%3' | Finds any values that have a 2 in the second position and end with a 3 |
WHERE SALARY::text LIKE '2___3' | Finds any values in a five-digit number that start with 2 and end with 3 |
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)yiibai.com
以下是一个例子,它会从公司表显示年龄以2开始所有记录:
yiibai.com
testdb=# SELECT * FROM COMPANY WHERE AGE::text LIKE '2%';yiibai.com
这将产生以下结果:
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)www.yiibai.com
以下是一个例子,它会显示所有记录从公司表的地址将有一个连字符( - ),里面的文字:
www.yiibai.com
testdb=# SELECT * FROM COMPANY WHERE ADDRESS LIKE '%-%'; www.yiibai.com
这将产生以下结果: www.yiibai.com
id | name | age | address | salary ----+------+-----+-------------------------------------------+-------- 4 | Mark | 25 | Rich-Mond | 65000 6 | Kim | 22 | South-Hall | 45000 (2 rows) www.yiibai.com