Frage Suchen Sie alle Sonderzeichen in einer Spalte in SQL Server 2008


Ich muss das Auftreten aller Sonderzeichen in einer Spalte finden SQL Server 2008. Also, ist mir egal A, B, C ... 8, 9, 0, aber mir ist es egal !, @, &,, etc.

Der einfachste Weg, dies zu tun, würde ich ausschließen A, B, C, ... 8, 9, 0, aber wenn ich eine Aussage schreibe, um diese auszuschließen, würde ich Einträge, die hatten, vermissen ! und A. Also, es scheint mir, dass ich eine Liste von jedem Nicht-Alphabet / Nicht-Nummernzeichen bekommen müsste, dann führe ein SELECT mit einem LIKE und Wildcard Qualifikanten.

Hier ist was ich laufen würde:

SELECT Col1
FROM TABLE
WHERE Col1 LIKE ('!', '@', '#', '$', '%'....)

Ich glaube jedoch nicht, dass Sie mehrere Qualifikanten spielen können, oder? Gibt es eine Möglichkeit, dies zu erreichen?


9
2017-10-15 14:34


Ursprung


Antworten:


Negative sind hier dein Freund:

SELECT Col1
FROM TABLE
WHERE Col1 like '%[^a-Z0-9]%'

Was sagt, dass Sie irgendwelche Zeilen wo wollen Col1 besteht aus einer beliebigen Anzahl von Zeichen und einem Zeichen nicht in der Menge a-Z0-9, und dann eine beliebige Anzahl von Zeichen.

Wenn Sie eine Sortierung nach Groß- / Kleinschreibung beachten, ist es wichtig, dass Sie einen Bereich verwenden, der sowohl Groß- als auch Kleinbuchstaben enthält A, a, Z und z, was ich gegeben habe (ursprünglich hatte ich es falsch herum gemacht). a kommt davor A. Z Kommt danach z)


Oder, um es anders auszudrücken, Sie hätten Ihr Original schreiben können WHERE wie:

Col1 LIKE '[!@#$%]'

Aber, wie Sie beobachtet haben, müssen Sie es wissen alle der Charaktere, die in den [].


27
2017-10-15 14:37



Das folgende Transact-SQL-Skript funktioniert für alle Sprachen (international). Die Lösung besteht darin, nicht nach alphanumerischen Zeichen zu suchen, sondern zu prüfen, ob Sonderzeichen enthalten sind.

DECLARE @teststring nvarchar(max)
SET @teststring = 'Test''Me'
SELECT 'IS ALPHANUMERIC: ' + @teststring
WHERE @teststring NOT LIKE '%[-!#%&+,./:;<=>@`{|}~"()*\\\_\^\?\[\]\'']%' {ESCAPE '\'}

0
2018-04-19 09:54



Select * from TableName Where ColumnName LIKE '%[^A-Za-z0-9, ]%'

Dadurch erhalten Sie alle Zeilen, die ein Sonderzeichen enthalten.


0
2018-02-23 17:56