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