我試圖了解postgres 中的like、rlike和similar之間的區別,以及每個運算子是否有特定的用例。
熟悉 TSQL 我一般使用like運算子來做類似的事情
Select * From Table where ColA like '%[0-9]%[a-z]%'
但是在 postgres 中,相同的陳述句不會產生相同的結果。
我的問題是:
- postgres 中的哪些運算子(如、rlike、類似于、...)最接近地模仿tsql 中like運算子的功能/可用性?
- 在決定在 postgress 中使用哪個運算子時,是否有一般的經驗法則?
謝謝!
uj5u.com熱心網友回復:
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 匹配零個或多個字符。~自動進行部分匹配,因此無需“翻譯”%運算式中的前導和尾隨。
如果要使用不區分大小寫的匹配,請 ~*改用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/370184.html
標籤:sql PostgreSQL的
上一篇:從sql表中選擇特定值
