PostgreSQL 中的正規表示式LIKE 子句:使用LIKE 與~ 運算子
在PostgreSQL 中,您可以利用正規表示來搜尋特定模式資料內。但是,如果您遇到表達式問題,則必須了解其中的細微差別和限制。
挑戰:第三個字元不符
考慮以下查詢:
SELECT * FROM table WHERE value LIKE '00[1-9]%' -- (third character should not be 0)
儘管其意圖排除第三個字元為「0 ”的任何值,但此查詢將不符合該標準。相反,它匹配任何以 '00' 開頭的值。
解:使用~ 運算子
要有效利用括號表達式,我們必須使用正規表示式運算子~:
SELECT * FROM tbl WHERE value ~ '^00[^0]'
^ ... 表示字串的開頭,確保模式僅在開始。
1 ... 表示符合「0」以外的任何內容的字元類別。
最佳化方法
為了獲得最佳效能,請考慮將查詢分成兩個LIKE表達式:
SELECT * FROM tbl WHERE value LIKE '00%' -- starting with '00' AND value NOT LIKE '000%' -- third character is not '0'
LIKE 不如正規表示式有效,但通常更快。透過使用經濟的 LIKE 表達式限制候選者,我們提高了整體查詢速度。
此外,利用左錨定表達式(例如 value LIKE '00%')至關重要,因為它們可以利用 PostgreSQL 中的索引。這對於大型表特別有利,而更複雜的正規表示式可能不支援索引。
以上是PostgreSQL 字串比對:LIKE 與 ~ 高效正規表示式查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!