Postgresql WHERE 子句
Postgresql UNION 语句 

Postgresql LIKE 子句

在 Postgresql 中,LIKE 子句用于执行模糊匹配查询,通常与 WHERE 子句一起使用,用于在文本字段中查找包含特定模式的数据。LIKE 子句支持使用通配符来进行模式匹配。

基本语法

string LIKE pattern [ESCAPE escape-character]
string NOT LIKE pattern [ESCAPE escape-character]

如果字符串与提供的模式匹配,则 LIKE 表达式返回 true。(正如预期的那样,如果 LIKE 返回 true,则 NOT LIKE 表达式返回 false,反之亦然。等效表达式为 NOT (string LIKE pattern)。

如果 pattern 不包含百分号或下划线,则 pattern 仅表示字符串本身;在这种情况下,LIKE 的作用类似于 equals 运算符。pattern 中的下划线 (_) 代表(匹配)任何单个字符;百分号 (%) 匹配零个或多个字符的任何序列。

使用示例

'abc' LIKE 'abc'    true
'abc' LIKE 'a%'     true
'abc' LIKE '_b_'    true
'abc' LIKE 'c'      false

LIKE 模式匹配始终覆盖整个字符串。因此,如果希望匹配字符串中任意位置的序列,则模式必须以百分号开头和结尾。

要匹配文本下划线或百分号而不匹配其他字符,pattern 中的相应字符前面必须有转义字符。默认转义字符是反斜杠,但可以使用 ESCAPE 子句选择不同的转义字符。要匹配转义字符本身,请编写两个转义字符。


正则表达式

Postgresql 还支持正则表达式来实现模式匹配。

string SIMILAR TO pattern [ESCAPE escape-character]
string NOT SIMILAR TO pattern [ESCAPE escape-character]

SIMILAR TO 运算符返回 true 或 false,具体取决于其模式是否与给定字符串匹配。它与 LIKE 类似,不同之处在于它使用 SQL 标准的正则表达式定义来解释模式。SQL 正则表达式是 LIKE 表示法和通用 (POSIX) 正则表达式表示法之间的奇怪交叉。

与 LIKE 一样,仅当 SIMILAR TO 运算符的模式与整个字符串匹配时,该运算符才会成功;这与常见的正则表达式行为不同,在常见的正则表达式行为中,模式可以匹配字符串的任何部分。与 LIKE 一样,SIMILAR TO 使用 _ 和 % 作为通配符,分别表示任何单个字符和任何字符串(这些字符类似于 POSIX 正则表达式中的 . 和 .*)。

正则使用示例

'abc' SIMILAR TO 'abc'          true
'abc' SIMILAR TO 'a'            false
'abc' SIMILAR TO '%(b|d)%'      true
'abc' SIMILAR TO '(b|c)%'       false
'-abc-' SIMILAR TO '%\mabc\M%'  true
'xabcy' SIMILAR TO '%\mabc\M%'  false