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