我正在寻找可以在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来工作,而不依赖于清除中传递的数据。
要以字符串形式而不是通配符的形式搜索“%”,需要以[%]进行转义。
现在,SQL Server仅需要转义3个字符:%_ [
因此,创建一个标量udf来包装它:
REPLACE(REPLACE(REPLACE(@myString, '[', '[[]'), '_', '[_]'), '%', '[%]')
由于SQL中的模式匹配非常简单(又名:非常有限),因此无需再复杂…