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
手册非常清晰LIKE,正则表达式是针对不同的东西.
喜欢
根据手册:
如果字符串与提供的模式匹配,则LIKE表达式返回true.(正如预期的那样,如果LIKE返回true ,则NOT LIKE表达式返回false,反之亦然.等效表达式为NOT(字符串LIKE模式).)
因此,LIKE在匹配字符串时返回true或false.
%类似于*filesearch,它意味着它将匹配零或任何之后或之前.
R% R和之后的任何字符.%R 任何角色和RLIKE它被用来代替=,手册中解释了更多功能.
-- 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无关.