如何通过LIKE表达式在SQL中查找方括号?

问题描述:

我需要包含符号[][email protected]#$%^&[]{}<>?/,.*(^在SQL服务器2014年如何通过LIKE表达式在SQL中查找方括号?

我怎样才能逃避括号发现其中包含目标字符串记录like表达序列找?

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] LIKE '%"[email protected]#$^&[]{}<>?/,.*(^"%'; 

[TARGET TABLE]具有[TARGET COLUMN]行哪个值

some text "[email protected]#$^&[]{}<>?/,.*(^" 

但表达的结果为空。

我知道[]是通配符,但不知道如何使用转义括号来查找字符串。

+0

我不知道SQL服务器的具体细节但是'%\ [\]%''可以完成这项工作(Oracle和MySQL就是这种情况)。 – FDavidov

我已经使用这个

Create Table #Rohit (VarcharValues varchar(255)) 
Insert into #Rohit values 
('"[email protected]#$^&[]{}<>?/,.*(^"') 

那么这

SELECT * FROM [#Rohit] WHERE VarcharValues LIKE '%"[email protected]#$^&\[]%' Escape '\' 

LIKE有一个转义字符,默认情况下是\。您可以将其设置为其他内容。所以这应该工作:

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] LIKE '%"[email protected]#$^\[\]{}<>?/,.*(^"%'; 

你可以将它设置为另一个字符,但它是很难选择一个给你的角色:

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] LIKE '%"[email protected]#$^+[+]{}<>?/,.*(^"%' ESCAPE '+' 

但是,如果你想成为更普遍的,也许你想要一个字符集的^。例如,为了获得包含任何非字母数字的字符列:

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] LIKE '%[^a-zA-Z0-9]%'; 

或者,如果你想找到只有包含非字母数字字符列:

SELECT * 
FROM [TARGET_TABLE] 
WHERE [TARGET COLUMN] NOT LIKE '%[a-zA-Z0-9]%'; 

这个想法可以,当然也可以扩展到其他套字。

您可以将左括号放在一个类中作为[[]。当闭括号不关闭类时,它被视为文字。 (我用的是从正则表达式,我认为SQL Server文档术语仅仅指的是这是一个设置

LIKE '%"[email protected]#$^&[[]]{}<>?/,.*(^"%';