2016-08-13 258 views
0

我需要包含符號[][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

回答

0

我已經使用這個

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

那麼這

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

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]%'; 

這個想法可以,當然也可以擴展到其他套字。

1

您可以將左括號放在一個類中作爲[[]。當閉括號不關閉類時,它被視爲文字。 (我用的是從正則表達式,我認爲SQL Server文檔術語僅僅指的是這是一個設置

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