首頁 >後端開發 >Golang >如何在 PostgreSQL 中轉義特殊字元以實現準確的模式匹配?

如何在 PostgreSQL 中轉義特殊字元以實現準確的模式匹配?

Susan Sarandon
Susan Sarandon原創
2024-11-20 04:30:02459瀏覽

How to Escape Special Characters for Accurate Pattern Matching in PostgreSQL?

在PostgreSQL 中轉義字串以進行模式匹配

為了準確匹配PostgreSQL 中的模式,其中用戶提供的字串可能包含特殊模式字符,例如% ,考慮轉義這些字符以確保精確匹配。或者,應用程式可以處理轉義過程。

在 PostgreSQL 中,必須使用 來引用 % 和 _ 等字符,但這可以使用 ESCAPE 子句進行自訂。若要按字面匹配字符,必須將其引用兩次。

例如,要匹配模式'john%node1^node2.uucp@' 以^ 作為轉義字符,請使用以下查詢:

... WHERE field LIKE 'john^%node1^^node2.uucp@%' ESCAPE '^'

但是,當standard_conforming_strings 被禁用時( PG 9.1 預設啟用它),可用於其他目的。此外,在註入場景中可能需要客戶端引用。

對於Go 中的通用處理,考慮standard_conforming_strings 和替代引號字符,可以使用以下查詢:

db.Query("SELECT * from USERS where name like replace(replace(replace(,'^','^^'),'%','^%'),'_','^_') ||'%' ESCAPE '^'",
     variable_user_input);

This處理伺服器端特殊字符的轉義和替換,防止SQL注入並確保模式匹配準確。

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

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