我试图过滤项与存储过程使用like。列是varchar(15)。我试图过滤的项目名称中有方括号。
例如:WC[R]S123456。
如果我做一个LIKE 'WC[R]S123456',它不会返回任何东西。
我找到了一些关于使用ESCAPE关键字LIKE的信息,但我如何使用它来将方括号作为常规字符串?
我试图过滤项与存储过程使用like。列是varchar(15)。我试图过滤的项目名称中有方括号。
例如:WC[R]S123456。
如果我做一个LIKE 'WC[R]S123456',它不会返回任何东西。
我找到了一些关于使用ESCAPE关键字LIKE的信息,但我如何使用它来将方括号作为常规字符串?
当前回答
LIKE 'WC[[]R]S123456'
or
LIKE 'WC\[R]S123456' ESCAPE '\'
应该工作。
其他回答
LIKE 'WC[[]R]S123456'
or
LIKE 'WC\[R]S123456' ESCAPE '\'
应该工作。
下面是我实际使用的:
like 'WC![R]S123456' ESCAPE '!'
如果需要搜索特殊字符,如%和_,则使用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 '\'
我需要从查询中排除以下划线开头的名称,所以我最终得到了这个:
WHERE b.[name] not like '\_%' escape '\' -- use \ as the escape character
根据文件:
您可以使用通配符模式匹配字符作为文字 字符。要使用通配符作为文字字符, 将通配符括在括号内。
你需要转义这三个字符%_[:
'5%' LIKE '5[%]' -- true
'5$' LIKE '5[%]' -- false
'foo_bar' LIKE 'foo[_]bar' -- true
'foo$bar' LIKE 'foo[_]bar' -- false
'foo[bar' LIKE 'foo[[]bar' -- true
'foo]bar' LIKE 'foo]bar' -- true