如何在SQL Server的存储过程中转义字符串,以便可以在LIKE表达式中安全使用。
假设我有一个NVARCHAR
像这样的变量:
declare @myString NVARCHAR(100);
我想在LIKE表达式中使用它:
... WHERE ... LIKE '%' + @myString + '%';
如何在T-SQL中转义字符串(更具体地说,是对LIKE模式匹配有意义的字符,例如%或?),以便可以安全地以这种方式使用?
例如,给定:
@myString = 'aa%bb'
我想:
WHERE ... LIKE '%' + @somehowEscapedMyString + '%'
匹配'aa%bb'
,'caa%bbc'
但没有'aaxbb'
或'caaxbb'
。
要在LIKE表达式中转义特殊字符,请在其前面加上转义字符。您可以选择与ESCAPE关键字一起使用的转义字符。(MSDN参考)
例如,使用\作为转义字符,可以转义%符号:
select * from table where myfield like '%15\% off%' ESCAPE '\'
如果您不知道字符串中将包含哪些字符,并且不想将其视为通配符,则可以在所有通配符前面加上转义字符,例如:
set @myString = replace(
replace(
replace(
replace( @myString
, '\', '\\' )
, '%', '\%' )
, '_', '\_' )
, '[', '\[' )
(请注意,您也必须转义转义字符,并确保这是内部字符,replace以免转义从其他replace语句添加的转义字符)。然后,您可以使用如下所示的内容:
select * from table where myfield like '%' + @myString + '%' ESCAPE '\'
还要记住为@myString变量分配更多的空间,因为随着字符串替换它会变长。
问题内容: 我正在使用Python创建XML文档。(逻辑结构-> XML字符串,反之则不行。) 如何使它转义我提供的字符串,以使它们无法弄乱XML? 问题答案: 您是说您要执行以下操作: 然后,您将获得很好的转义XML字符串:
问题内容: 我想匹配}是动态定义的。它可能有句点和破折号,并且里面有很多东西,我真的需要逃脱它。 PHP提供了一种安全地转义所有特殊字符的方法。我想知道Go是否提供任何形式的模拟。 问题答案: 做事。
问题内容: 我想使用来自用户的输入作为正则表达式模式来搜索某些文本。它可以工作,但是我该如何处理用户在正则表达式中放置有意义的字符的情况?例如,用户要搜索:正则表达式引擎会将(s)分组。我希望它像对待字符串一样对待它。我可以replace在用户输入上运行并将和 替换,但是问题是我将需要对每个可能的正则表达式符号进行替换。你知道更好的方法吗? 问题答案: 使用此功能: 4.2.3 re模块内容 转义
问题内容: 我正在尝试使用JQuery将dataString传递给ajax调用。在调用中,我构造了get参数,然后将它们发送到接收端的php页面。问题在于数据字符串中包含“&”符号,而HTML严格的验证器对此很不利。 这是代码: 这是验证器消息的示例:无法为通用实体“密码”生成系统标识符。 (在验证器中,第一个“&”号后的“ p”标记为红色,指示故障点)。 问题答案: 尝试将您的JavaScrip
问题内容: 我希望换行在打印从其他位置检索的字符串时显式显示。因此,如果字符串为“ abc \ ndef”,则我不希望这种情况发生: 但是相反: 有没有一种方法可以修改打印,或修改参数,或者完全修改另一个函数来完成此任务? 问题答案: 您可以使用转义字符停止python的另一种方法是使用原始字符串,如下所示: 要么 使用的唯一问题是它将字符串放在单引号中,如果您想使用引号可以很方便
问题内容: 打印出来,好像我分开了。我要打印。有什么方法可以处理一些正则表达式魔术来完成我在这里想要的吗? 也许是一个更简单的示例: 打印。我要打印。`。 问题答案: 感谢Cine提供的信息,我 认为 这些是我正在寻找的答案: 现在,通过对所有不同的量词进行实验,诚实地发现了第二个。既不是贪婪也不是勉强的工作,而是占有欲的工作。 我仍然不确定为什么。