首頁 >資料庫 >mysql教程 >PostgreSQL 中如何有效率地匹配以「00」開頭且第三位非零的字串?

PostgreSQL 中如何有效率地匹配以「00」開頭且第三位非零的字串?

Barbara Streisand
Barbara Streisand原創
2024-12-25 06:40:26708瀏覽

How Can I Efficiently Match Strings Starting with

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn