2011-06-24 3 views
0

Possible en double:
Using regular expression within a stored procedureComment identifier les symboles lowecase et spéciaux dans une chaîne?

J'ai besoin de valider une chaîne, qui ne doit pas contenir contenir des lettres minuscules et Symbols.I spéciaux ont utilisé ci-dessous requête, en utilisant ce que je suis capable de trouver des symboles spéciaux et incapable de trouver en minuscules. S'il vous plaît suggérer la meilleure façon.

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 
+1

La validation de chaîne est généralement mieux effectuée dans votre couche d'application. – JNK

+0

Au lieu d'essayer de détecter les lettres minuscules, vous pouvez simplement convertir la chaîne en toutes les lettres majuscules – dave

Répondre

4

HalfTrackMindMan presque avait raison (et le fait pour les données de l'échantillon), mais malheureusement, les plages de caractères élargir toujours à inclure des lettres minuscules (si bcABC123 passerait sa validation):

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 

(comme [A-Z] étend AbBcCdDeEf...zZ)

classement à utiliser est une question de préférence - soit un collatio binaire n, ou un sensible à la casse (_CS) et un accent sensible (_AS) conviendront.

+0

+1, était sur le point d'ajouter la même chose :) – AdaTheDev

+0

Merci pour le script, le script de @ HalfTrackMindMan passe validaiton pour la chaîne bcABC123.Will il affecte mes performances de requête. – Simhadri

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

J'utiliserais personnellement 'Latin1_General_Bin' mais je pense que c'est la voie à suivre. –

+0

Cela fonctionne pour moi, merci @HalfTrackMindMan s'il vous plaît suggérer si cela affecte mes performances de requête. – Simhadri

Questions connexes