当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在LIKE子句中转义方括号?》经验,为你挑选了6个好方法。

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

例如: WC[R]S123456.

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

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



1> Otávio Décio..:
LIKE 'WC[[]R]S123456' 

要么

LIKE 'WC\[R]S123456' ESCAPE '\'

应该管用.


如果有人不清楚为什么需要转义括号,[LIKE]文档(https://msdn.microsoft.com/en-us/library/ms179859.aspx)表示它用于匹配单个字符在范围或集合中.例如,使用`LIKE'[fz] oo'`将匹配'foo'和'zoo'.
如果要使用自定义转义字符(反斜杠确实是自定义),则需要ESCAPE关键字.
我也纠正了答案的另一部分.[SQL小提琴前后版本](http://www.sqlfiddle.com/#!3/d41d8/5633)

2> 小智..:

假设你想匹配文字its[brac]et.

你不需要逃脱]它,因为它只有在配对时具有特殊含义[.

因此逃避[就足以解决问题.您可以[ 通过替换它 来逃避[[].


这真的很有帮助,也是最好的答案.

3> Andrew Backe..:

我需要从查询中排除以下划线开头的名称,所以我最终得到了这个:

WHERE b.[name] not like '\_%' escape '\'  -- use \ as the escape character


我必须使用此版本(明确指定“转义”字符)-此处的其他答案没有为我提供正确的结果。

4> Travis..:

这是我实际使用的:

like 'WC![R]S123456' ESCAPE '!'



5> scottm..:

如果您需要搜索%和_等特殊字符(通常是通配符),则使用ESCAPE关键字.如果指定ESCAPE,SQL将逐字搜索字符%和_.

这是一篇包含更多示例的好文章

SELECT columns FROM table WHERE 
    column LIKE '%[[]SQL Server Driver]%' 

-- or 

SELECT columns FROM table WHERE 
    column LIKE '%\[SQL Server Driver]%' ESCAPE '\'



6> ssurba..:

如果像我这样需要转义'_'(下划线)之类特殊字符,并且您不愿意/无法定义ESCAPE子句,则不妨将特殊字符括在方括号'[ '']'

这就解释了“怪异”字符串'[[]'的含义-它只是在方括号中包含'['字符,从而有效地将其转义。

我的用例是指定带有下划线的存储过程的名称,作为Profiler的过滤条件。因此,我将字符串'%name [_] of [_] a [_] stored [_] procedure%'放入了TextData LIKE字段中,它为我提供了想要实现的跟踪结果。

这是文档中的一个很好的示例: LIKE(Transact-SQL)-使用通配符作为文字

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有