admin

如何在SQL Server中转义要与LIKE运算符一起使用的字符串?

sql

我正在寻找可以在SQL Server中正常工作的东西,类似于@c#中的符号,它会使字符串按照原义被接受。例如:

string text = "abcd\\efg";
Output of text = abcd\efg

string text = @"abcd\\efg";
Output of text = abcd\\efg

注意@如何影响字符串按原样使用每个字符。

现在,我不确定这是否可行,但这是我的问题,也许有更好的方法来解决此问题。考虑以下基本查询:

SELECT [Name] 
  FROM [Test] 
 WHERE [Name] LIKE (@searchText + '%')

我的问题是,如果他们放置%_或其他任何会影响我的like子句的特殊字符。我希望比赛表现得像“开始于”功能。那么,有什么我可以应用到@searchText上的字面意思吗?或者是否有我没有想到的更好的解决方案?

编辑: 我不希望解决方案是客户端清洗。我需要此存储的proc来工作,而不依赖于清除中传递的数据。


阅读 151

收藏
2021-05-10

共1个答案

admin

要以字符串形式而不是通配符的形式搜索“%”,需要以[%]进行转义。

现在,SQL Server仅需要转义3个字符:%_ [

因此,创建一个标量udf来包装它:

REPLACE(REPLACE(REPLACE(@myString, '[', '[[]'), '_', '[_]'), '%', '[%]')

由于SQL中的模式匹配非常简单(又名:非常有限),因此无需再复杂…

2021-05-10