我試圖了解postgres 中的like、rlike和similar之間的區別,以及每個運算符是否有特定的用例。
熟悉 TSQL 我一般使用like操作符來做類似的事情
Select * From Table where ColA like '%[0-9]%[a-z]%'
但是在 postgres 中,相同的語句不會產生相同的結果。
我的問題是:
謝謝!
LIKE 不支持 SQL 中的正則表達式(而且 SQL Server 的實現並不是真正的正則表達式)。
該similar to
運算符可能最接近 SQL Server 的 LIKE,因為它支持%
來自“常規” LIKE 運算符的通配符,但也允許使用正則表達式,
所以
where cola similar to '%[0-9]%[a-z]%'
應該返回與 SQL Server 中相同的值,但它區分大小寫,而 SQL Server 不是默認值。
如果你想要一個真正的正則表達式,那麼你需要使用~
運算符
Select *
From Table
where ColA ~ '[0-9].*[a-z]'
在“真正的”正則表達式中, the%
不是通配符,因此您需要使用.*
which 匹配零個或多個字符。~
自動進行部分匹配,因此無需“翻譯”%
表達式中的前導和尾隨。
如果要使用不區分大小寫的匹配,請~*
改用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句