Kel*_*sey 13 sql t-sql sql-server pattern-matching
我正在寻找在SQL Server中工作的类似于@c#中的符号的东西,这会导致字符串被视为文字.例如:
string text = "abcd\\efg";
Output of text = abcd\efg
string text = @"abcd\\efg";
Output of text = abcd\\efg
Run Code Online (Sandbox Code Playgroud)
注意@如何影响字符串以按字符顺序获取每个字符.
现在我不确定这是可能的,但这是我的问题,也许有更好的方法来解决这个问题.请考虑以下基本查询:
SELECT [Name]
FROM [Test]
WHERE [Name] LIKE (@searchText + '%')
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果他们把一个%,_或任何其他的那些特殊字符,可以影响我喜欢条款.我希望这场比赛就像一个'开始'功能.那么有什么我可以应用于@searchText来说明这一点,或者是否有可能是一个我没想到的更好的解决方案?
编辑:我不希望解决方案是客户端清理.我需要这个存储过程工作,而不依赖于被清理传递的数据.
gbn*_*gbn 20
要在字符串中搜索"%"作为文字而不是通配符,它需要以[%]的形式进行转义.
现在,SQL Server只需要3个字符转义:%_ [
所以,创建一个标量udf来包装它:
REPLACE(REPLACE(REPLACE(@myString, '[', '[[]'), '_', '[_]'), '%', '[%]')
Run Code Online (Sandbox Code Playgroud)
由于SQL中的简单(又名:非常有限)模式匹配,不需要更复杂的...
在TSQL中,您可以将%和_字符包装在括号中,如此[%] [_]这会告诉SQL将它们视为文字.
我已在SQL Server 7.0,2000和2005中测试并验证了这项工作.
http://msdn.microsoft.com/en-us/library/aa933232(SQL.80).aspx
| 归档时间: |
|
| 查看次数: |
10289 次 |
| 最近记录: |