PostgreSQL LIKE 子句中的正規表示式
您的表達式旨在匹配以「00」開頭並後跟1 到1之間的數字的字串9,但不包括第三個字元為“0”的字串。錯誤的表達式是:
select * from table where value like '00[1-9]%'
LIKE 運算子的錯誤用法:
PostgreSQL 中的正規表示式運算子使用波形符(~) 而不是LIKE。要使用括號表達式,需要將運算子變更為~.
改進的正規表示式:
SELECT * FROM table WHERE value ~ '^00[^0]'
替代方案使用LIKE:
您可以使用LIKE 運算子與否定式相結合使用,而不是正規表示式:
您可以使用LIKE 運算子與否定式相結合使用,而不是正規表示式:SELECT * FROM table WHERE value LIKE '00%' -- Starts with '00' AND value NOT LIKE '000%' -- Excludes third character '0'對於簡單模式,此方法通常比正規表示式更快。
索引最佳化:
Postgres 支援下列索引左錨定的 LIKE 表達式,例如「00%」。索引可以顯著提高大型表的效能。正規表示式可能不會總是使用索引,因此值得考慮使用 LIKE 替代方案以獲得更好的索引機會。以上是PostgreSQL 中如何有效率地匹配以「00」開頭且第三位非零的字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!