Postgres正则表达式^开始于和$结束

moo*_*hot -2 regex sql postgresql

新手问题.我正在寻找以字母"R"开头的蜇行:

SELECT *
FROM table
WHERE column LIKE  'R%'
Run Code Online (Sandbox Code Playgroud)

这不

SELECT *
FROM table
WHERE column LIKE '^R%'
Run Code Online (Sandbox Code Playgroud)

为什么?也只是好奇,如果我希望它结束R,我使用$?

'%R$'
Run Code Online (Sandbox Code Playgroud)

这里没有很好地解释模式匹配.如果您知道其他资源,请分享.谢谢 https://www.postgresql.org/docs/9.3/static/functions-matching.html

Dan*_*Dan 6

手册非常清晰LIKE,正则表达式是针对不同的东西.

喜欢

根据手册:

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

因此,LIKE在匹配字符串时返回true或false.

%类似于*filesearch,它意味着它将匹配零或任何之后或之前.

  • R% R和之后的任何字符.
  • %R 任何角色和R

LIKE它被用来代替=,手册中解释了更多功能.

-- Gets zero or any characters before one R
SELECT * FROM table WHERE column LIKE '%R'

-- Gets zero or any characters after one R
SELECT * FROM table WHERE column LIKE 'R%'
Run Code Online (Sandbox Code Playgroud)

我喜欢

LIKE 区分大小写,使其可以使用不区分大小写 ILIKE

定期进行

在postgreSQL中,对于正则表达式匹配,而不是=使用~和正则表达式格式相应的POSIX正则表达式标准

一个例子是:

-- Gets zero or any spaces numbers and text characters before one R
SELECT * FROM table WHERE column ~ '^[\s\w]*[R]{1}$'

-- Gets zero or any spaces numbers and text characters after one R
SELECT * FROM table WHERE column ~ '^[R]{1}[\s\w]*$'
Run Code Online (Sandbox Code Playgroud)

在手册中有正则表达式的所有可用运算符的解释.如何使用正则表达式是另一回事,它在POSIX正则表达式标准中; 这与PostgreSQL无关.