我试图过滤项与存储过程使用like。列是varchar(15)。我试图过滤的项目名称中有方括号。

例如:WC[R]S123456。

如果我做一个LIKE 'WC[R]S123456',它不会返回任何东西。

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


当前回答

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

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

其他回答

LIKE 'WC[[]R]S123456' 

or

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

应该工作。

除了键盘上的“\”或其他字符外,还可以使用键盘上没有的特殊字符。根据您的用例,这可能是必要的,如果您不希望用户输入意外被用作转义字符。

这段时间有个问题

LIKE 'WC[[]R]S123456'

and

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

都为SQL Server工作,都不为Oracle工作。

似乎没有任何ISO/IEC 9075方法来识别涉及左括号的模式。

假设你想匹配字面量its[brac]et。

你不需要转义[],因为它只有在与[搭配使用时才有特殊的意义。

因此,逃跑就足以解决问题了。可以通过将[[]替换为[]来转义[。

下面是我实际使用的:

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