Wie man lowecase und spezielle Symbole in einem String identifiziert?

Mögliche Duplikate:
Mit regulärem Ausdruck innerhalb einer gespeicherten Prozedur

Ich muss einen String validieren, der nicht enthalten sollte Kleinbuchstaben und spezielle Symbole enthalten. Ich habe unten Abfrage verwendet, mit diesem bin ich in der Lage, spezielle Symbole zu finden und nicht in der Lage, Kleinbuchstaben zu finden. Bitte schlagen Sie den besten path vor.

DECLARE @InvNum VARCHAR(256); SET @InvNum='abcACB123' IF (@InvNum LIKE '%[^A-Z0-9]%') BEGIN Print 'Enter valid Invoice #, Special characters and Lowecase Letters are not allowed' END ELSE BEGIN Print 'Validation Success' END 

HalfTrackMindMan hat es fast richtig gemacht (und tut für die Beispieldaten), aber leider erweitern sich Charakterbereiche immer um Kleinbuchstaben (also bcABC123 würde seine validation übergeben):

 DECLARE @InvNum VARCHAR(256); SET @InvNum='abcACB123' IF (@InvNum COLLATE Latin1_General_CS_AS LIKE '%[^ABCDEFGHIJKLMNOPQRSTUVWXYZ0-9]%') BEGIN Print 'Enter valid Invoice #, Special characters and Lowecase Letters are not allowed' END ELSE BEGIN Print 'Validation Success' END 

( [AZ] erweitert sich als AbBcCdDeEf...zZ )

Welche Kollation zu verwenden ist eine Frage der Präferenz – entweder eine binäre sorting, oder eine, die Case Sensitive ( _CS ) und Accent Sensitive ( _AS ) geeignet ist.

 IF (@InvNum COLLATE Latin1_General_CS_AS LIKE '%[^A-Z0-9]%')