首頁 > 後端開發 > Golang > 如何轉義 PostgreSQL LIKE 模式中的特殊字元?

如何轉義 PostgreSQL LIKE 模式中的特殊字元?

Mary-Kate Olsen
發布: 2024-11-23 00:22:13
原創
422 人瀏覽過

How to Escape Special Characters in PostgreSQL LIKE Patterns?

轉義 PostgreSQL LIKE 模式中的特殊字元

轉義 LIKE 模式中的特殊字元對於確保準確匹配至關重要。例如,考慮這樣一種情況:您正在搜尋名稱列以使用者提供的字串(例如「rob%」)開頭的行。但是,如果使用者輸入包含“_”等特殊字符,則會導致誤報。

轉義機制

PostgreSQL 允許您使用轉義特殊字元反斜線 () 或使用 ESCAPE 子句指定的使用者定義的轉義字元。要按字面匹配特殊字符,您必須將其轉義兩次。

範例

要按字面匹配“rob_”,您將使用以下 LIKE 模式:

WHERE name LIKE 'rob^^%'
登入後複製

或者,您可以使用轉義子句並指定替代轉義字元:

WHERE name LIKE 'rob_%node1^^node2.uucp@%' ESCAPE '^'
登入後複製

這將符合「john%node1^node2.uccp@」後面跟著任何字元。

注意事項

  • 預設轉義字元是反斜杠,但當 standard_conforming_strings 為OFF。
  • 轉義特殊字元也適用於根據使用者輸入建構的動態 SQL 語句,在這種情況下,應該在伺服器端執行以避免 SQL 注入。
  • 使用佔位符進行變數替換可確保兩者準確匹配和安全性。

通用SQL 語句

這是一個通用的SQL 語句,可以使用或不使用standard_conforming_strings ON,使用伺服器端轉義字元來取代:

SELECT * FROM USERS WHERE name LIKE replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'
登入後複製

以上是如何轉義 PostgreSQL LIKE 模式中的特殊字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板