2010-06-03 7 views
9

Ich arbeite mit SQL Server 2005.SQL-Abfrage für die Zeilen mit Sonderzeichen zu finden, nur

Ich brauche nur noch diejenigen Zeilen, um herauszufinden, ein Sonderzeichen in „Body“ Spalte ist. Im folgenden Szenario sollte das Ergebnis nur die Zeile mit TemplateID = 2 sein. Wie schreiben wir die Abfrage dafür?

CREATE TABLE #Template (TemplateID INT, Body VARCHAR(100)) 

INSERT INTO #Template (TemplateID,Body) VALUES (1,'abcd 1234') 

INSERT INTO #Template (TemplateID,Body) VALUES (2,'#^[email protected]') 

Alles andere als die folgende ist ein Sonderzeichen für dieses Szenario

1) Alphabtes 

2) Digits 

3) Space 

Antwort

28
SELECT 
    TemplateID, 
    Body 
FROM 
    #Template 
WHERE 
    Body LIKE '%[^0-9a-zA-Z ]%' 

Das Zeug zwischen den Klammern sagt Zahlen (0-9), Klein Alphas (az), Groß Alphas (AZ) und der Raum. Das "^" macht das "NICHT" zu einem dieser Dinge. Beachten Sie, dass dies anders ist als NOT WIE '% [0-9a-zA-Z]%'

Verwandte Themen