Asp.net 在SQL参数中转义用户输入

Asp.net 在SQL参数中转义用户输入,asp.net,sql-server,.net-3.5,Asp.net,Sql Server,.net 3.5,我在SELECT语句中有以下WHERE条件: WHERE ('.' + column_name LIKE @prefix)) @prefix参数设置如下: cmd.Parameters.AddWithValue("@prefix", "%[^a-z]" & prefix & "%") 前缀变量取自表单输入 我遇到的问题是当用户输入“%”或“[”或其他特殊字符时。如何确保这些字符是转义的,而不是被视为特殊字符 相关:通常,如何阻止人们在输入中输入“%”,并将其视为通配符?提供了

我在
SELECT
语句中有以下
WHERE
条件:

WHERE ('.' + column_name LIKE @prefix))
@prefix
参数设置如下:

cmd.Parameters.AddWithValue("@prefix", "%[^a-z]" & prefix & "%")
前缀
变量取自表单输入

我遇到的问题是当用户输入“%”或“[”或其他特殊字符时。如何确保这些字符是转义的,而不是被视为特殊字符

相关:通常,如何阻止人们在输入中输入“%”,并将其视为通配符?

提供了一个可选的
转义
子句:

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]

您可以将转义字符设置为您喜欢的单个字符,并使用它转义元字符。

可能重复@PreetSangha我认为这个问题的范围更窄,因为它要求在
LIKE
表达式中转义元字符。您能为我的查询提供一个这样的示例吗?@Andrew您可以使用
Regex.R替换(前缀“[~%\u[\]]”,“!$0”)
以感叹号将前缀转义为
,然后在转义子句中使用感叹号:
列名称,如@prefix escape'!”
。谢谢。我已更改为
prefix=Regex.Replace(前缀“[!~%\u[\]]”,“!$0”)
。我收集到
需要转义,因为它是转义字符。另外,为什么要包含
~
?@Andrew“为什么要包含~?”,因为它在键盘上的
旁边,所以我按错了键:)它应该是
[!\\]