我试图理解类、rlike和在postgres中类似的区别,以及每个操作符是否有特定的用例。
由于熟悉TSQL,我通常使用类似于的操作符来执行以下操作
Select * From Table where ColA like '%[0-9]%[a-z]%'但在postgres,同样的说法不会产生同样的结果。
我的问题是:
中使用哪个运算符时,是否有一般的经验规则?
谢谢!
发布于 2021-11-30 18:10:59
LIKE不支持SQL中的正则表达式(而且Server的实现并不是真正的正则表达式)。
similar to运算符可能是最接近Server的,因为它支持来自“常规”类运算符的%通配符,但也允许使用正则表达式,
所以
where cola similar to '%[0-9]%[a-z]%'应返回与Server相同的内容,但例外情况是它区分大小写,而Server在默认情况下不区分大小写。
如果您想要一个真正的正则表达式,则需要使用~运算符。
Select *
From Table
where ColA ~ '[0-9].*[a-z]'在“真实”正则表达式中,%不是通配符,因此需要使用匹配零或多个字符的.*。~会自动进行部分匹配,因此不需要从表达式中“转换”前面和后面的%。
如果要使用不区分大小写的匹配,请使用~*。
https://stackoverflow.com/questions/70174092
复制相似问题