SQL Server:需要转义 [?]

7

我需要在SQL Server中转义 [ 字符。

select * from sometable where name like '[something]';

我正在寻找一个 [,但我不希望它作为通配符。已经尝试过使用:。针对这个问题,您可以考虑在方括号前加上反斜杠来转义该字符,例如\[,这样方括号就不会被解释成正则表达式中的元字符。
select * from sometable where name like ''[something]';

但是从这里获得错误信息:

Msg 102,级别15,状态1,行1,“something”附近的语法不正确。 Msg 105,级别15,状态1,行1,在字符字符串“;后有未关闭的引号


2
可能是这个问题的重复: 如何在LIKE语句中转义方括号? - onedaywhen
3个回答

7

使用:

select * from sometable where name like '[[]something[]]';

你也可以使用:

select * from sometable where name like '\[something\]' escape '\';

MSDN上的Transact-SQL中的LIKE中有描述。


是的!!成功了!!非常感谢您所有的评论!! - user840930

4

[嵌入[]

declare @T table
(
  name varchar(20)
)

insert into @T values
('abc'),
('[abc')

select *
from @T 
where name like '[[]a%'

结果:

name
--------------------
[abc

看看在like表达式中你可以做什么。 LIKE (Transact-SQL)


1
可能有所帮助的是指出它正在使用正则表达式,因此[...]表示可接受的字符集。这就是这个解决方案的工作原理和原因。 - weston
1
@weston - 已更新答案,并附上可以详细阅读的链接。 - Mikael Eriksson

0
这是一段小样例代码。您需要将[嵌入到[]中:
SELECT FirstName 
  FROM (SELECT '[Test]' AS FirstName) as t 
 WHERE FirstName LIKE '[[]%'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接