我正在寻找在 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 来表示按字面意思理解,或者是否有一个我没有想到的更好的解决方案?
编辑:我不希望解决方案是客户端清理。我需要这个存储过程来工作,而不依赖于清理中传递的数据。
最佳答案
要在字符串中搜索“%”作为文字而不是通配符,需要将其转义为 [%]。
现在,SQL Server只需要3个字符转义:% _ [
因此,创建一个标量 udf 来包装它:
REPLACE(REPLACE(REPLACE(@myString, '[', '[[]'), '_', '[_]'), '%', '[%]')
由于 SQL 中的模式匹配很简单(又名:非常有限),因此不需要更复杂的东西......
关于sql - 如何转义字符串以与 SQL Server 中的 LIKE 运算符一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1428197/