2016-08-13 36 views
0

Ich brauche von Sequenz zu finden, die Symbole [] wie [email protected]#$%^&[]{}<>?/,.*(^ mit einem like Ausdruck in SQL Server 2014Wie finden eckige Klammern in SQL durch LIKE Ausdrücke?

Wie ich Aufzeichnungen Klammern entweichen kann zu finden, die Zeichenfolge enthält Ziel enthält?

Beispiel

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

[TARGET TABLE] hat eine Reihe mit [TARGET COLUMN] welcher Wert

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

aber Ergebnis der Expression ist leer.

Ich weiß, was [] ist Wildcard, aber ich weiß nicht, wie Escape-Klammern, um Strings mit ihnen zu finden.

+0

Ich weiß nicht die genauen Details von SQL-Server Implementierung, aber ''% \ [\]%' 'würde den Job erledigen (dies wird bei Oracle und MySQL der Fall sein). – FDavidov

Antwort

0

ich diese benutzt haben

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

Dann Diese

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

LIKE hat ein Escape-Zeichen, die standardmäßig \ ist. Sie können es auf etwas anderes einstellen. So sollte diese Arbeit:

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

Sie es auf einen anderen Zeichensatz, aber es ist schwer, einen bestimmten Ihre Charaktere zu wählen:

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

Aber, wenn Sie allgemeinere sein wollen, vielleicht Sie wollen ^ für einen Zeichensatz. Zum Beispiel eine Spalte zu erhalten, die alle nicht alphnumeric Zeichen enthält:

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

Oder, wenn Sie wollen Spalten finden, die nur nicht-alphanumerische Zeichen enthalten:

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

Diese Idee kann, natürlich, auf andere Gruppen von Charakteren erweitert werden.

1

Sie können die linke Klammer in eine Klasse wie [[] einfügen. Wenn eine schließende Klammer eine Klasse nicht schließt, wird sie als Literal behandelt. (Ich verwende das Wort Klasse als Terminologie von regulären Ausdrücken, wo ich die SQL Server-Dokumentation denken bezieht sich nur auf dieses als ein gesetzt.)

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