1. 程式人生 > >「PostgreSQL」PostgreSQL模糊查詢, postgres特殊符號模糊查詢

「PostgreSQL」PostgreSQL模糊查詢, postgres特殊符號模糊查詢

在做WEB專案時, 經常會需要使用搜索功能, 而且大多數時候是需要模糊搜尋, 以下將對模糊搜尋進行介紹:

通常我們是這樣寫的:

SELECT * FROM 表名 WHERE 欄位 LIKE ('%' || '關鍵字' || '%')

或者這樣寫:

SELECT * FROM 表名 WHERE 欄位 ~* '關鍵字'

但是這兩種是有風險的!

可能出現的問題:

invalid regular expression: quantifier operand invalid

出現原因: 使用 ~* 符號進行模糊查詢時, 關鍵字使用 *

invalid regular expression: invalid escape \ sequence

出現原因: 使用 ~* 符號進行模糊查詢時, 關鍵字使用 \

等等各種因為特殊符號產生的問題, 不一一舉例了

類似的, 使用特殊符號作為關鍵字時, 就會出現類似的報錯問題.

所以, 既是模糊搜尋,搜尋的內容又允許帶有特殊符號的時候, 就必須對此情況進行處理!

解決方案:

同事們經過摸索, 研究出來的超厲害的解決方案:
SELECT * FROM 表名 WHERE 欄位 ILIKE regexp_replace(concat('%','關鍵字','%'),'\\','\\\','g')

經過測試, 你在關鍵字內輸入任何特殊符號, 都能正常的進行查詢!