相关疑难解决方法(0)

如何在LIKE子句中转义方括号?

我正在尝试使用类似的过滤器使用存储过程过滤项目.该列是varchar(15).我想要过滤的项目在名称中有方括号.

例如: WC[R]S123456.

如果我这样做LIKE 'WC[R]S123456',它将不会返回任何东西.

我找到了一些关于使用ESCAPE关键字的信息,LIKE但我不明白如何使用它来将方括号视为常规字符串.

t-sql sql-server escaping character sql-like

222
推荐指数
7
解决办法
14万
查看次数

在SQL Server中转义字符串,以便在LIKE表达式中使用它是安全的

如何在SQL Server的存储过程中转义字符串,以便在LIKE表达式中使用它是安全的.

假设我有一个NVARCHAR像这样的变量:

declare @myString NVARCHAR(100);
Run Code Online (Sandbox Code Playgroud)

我想在LIKE表达式中使用它:

... WHERE ... LIKE '%' + @myString + '%';
Run Code Online (Sandbox Code Playgroud)

如何在T-SQL中转义字符串(更具体地说,对LIKE模式匹配有意义的字符,例如%?),以便以这种方式使用它是安全的?

例如,给定:

@myString = 'aa%bb'
Run Code Online (Sandbox Code Playgroud)

我想要:

WHERE ... LIKE '%' + @somehowEscapedMyString + '%'
Run Code Online (Sandbox Code Playgroud)

匹配'aa%bb','caa%bbc'但不是'aaxbb''caaxbb'.

t-sql sql-server stored-procedures sql-like

74
推荐指数
3
解决办法
17万
查看次数

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

我正在寻找在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来说明这一点,或者是否有可能是一个我没想到的更好的解决方案?

编辑:我不希望解决方案是客户端清理.我需要这个存储过程工作,而不依赖于被清理传递的数据.

sql t-sql sql-server pattern-matching

13
推荐指数
2
解决办法
1万
查看次数

使用sql参数转义SQL LIKE语句中的特殊字符

我有一张包含产品的表格.我需要查询查找所有匹配结果到用户输入值.我SqlParameter用于插入输入.

SqlCommand findProcutsByPattern = new SqlCommand(
    "SELECT *" +
    " FROM [Products]" +
    " WHERE ProductName LIKE @pattern", connection);

findProcutsByPattern.Parameters.AddWithValue("@pattern", '%' + pattern + '%');
Run Code Online (Sandbox Code Playgroud)

当用户输入字符串包含'_'或'%'时,问题就出现了,因为它们被解释为特殊字符.另一方面,考虑到这一点:

命令对象使用参数将值传递给SQL语句或存储过程,从而提供类型检查和验证.与命令文本不同,参数输入被视为文字值,而不是可执行代码.

我不应该有这样的问题.我是否需要替换/转义输入字符串中的所有'_'和'%',或者是否有更优雅的解决方案.我希望输入被视为文字.

我在表中有一些记录,其中包括名称中的特殊字符(N_EW,N\EW,N%EW,N"EW,N'EW).指定\,"'作为输入工作正常(考虑它们)作为文字).

c# sql sql-server escaping sqlparameter

4
推荐指数
1
解决办法
1万
查看次数