Published 2022-06-07
Postgresql - LIKE
假如我们要查询 name 字段以 Jen开通 的所有记录,可以这样写:
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name LIKE 'Jen%';

%匹配任意多个字符_匹配一个字符
语法
value LIKE pattern [ESCAPE escape_character]
value NOT LIKE pattern [ESCAPE escape_character]
示例
SELECT
'foo' LIKE 'foo', -- true
'foo' LIKE 'f%', -- true
'foo' LIKE '_o_', -- true
'bar' LIKE 'b_'; -- false
- 第一个表达式返 true,因为该表达式不包含任何通配符,类似于
= - 第二个表达式返 true,因为该表达式包含一个通配符,以
f开头,后跟任意数量的字符 - 第三个表达式返 true,因为该表达式包含一个通配符,以
_开头,匹配任何单个字符开通,后跟字幕o并以任何单个字符结尾的字符串 - 第四个表达式返 false,因为该表达式包含一个通配符,以
b开头,匹配任何单个字符开通,后跟字幕_并以任何单个字符结尾的字符串
例如,查询返回名字包含er字符串的所有记录:
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name LIKE '%er%'
ORDER BY
first_name;

%与_的使用
SELECT
first_name,
last_name
FROM
customer
WHERE
first_name LIKE '_her%'
ORDER BY
first_name;

| Operator | Equivalent |
|---|---|
| ~~ | LIKE |
| ~~* | ILIKE |
| !~~ | NOT LIKE |
| !~~* | NOT ILIKE |