SQL Server, combinant % et [] des caractères spéciaux COMME déclaration
En t-sql, est-il un moyen de faire la correspondance de motif dans un énoncé tel que vous pouvez rechercher pour 1 ou plusieurs caractères dans un ensemble donné?
Pour être plus précis, j'essaie de venir avec une déclaration qui va renvoyer des chaînes qui commencent par 1 ou plusieurs lettres, et à la fin à 1 ou plusieurs numéros.
De sorte que ces chaînes doivent correspondre à:
- abcd1234
- a1
- abcdef2
- ab123456
Et ces chaînes ne doivent pas correspondre à:
- abcd
- 1234
- abcd1234abcd
- 1abcd1
Je sais que vous pouvez utiliser le générique % pour correspondre à une chaîne de 0 ou plusieurs caractères, et vous pouvez utiliser des crochets[] pour correspondre à un caractère unique dans un ensemble donné. Mais est-il possible de combiner ces afin que je puisse match sur 1 ou plusieurs caractères dans un ensemble donné?
Quelque chose comme ce serait bien, mais bien sûr ne fonctionne pas:
WHERE ColumnName LIKE '[%a-z][%0-9]'
Personne ne sait d'une solution à ce problème? Ou est-il tout simplement pas possible dans SQL Server?
Grâce,
Jim
non ça ne marchera pas parce que je veux tous les caractères alphabétiques en premier, suivi par uniquement des caractères numériques. Martin Smith commentaire ci-dessous en fait ce que je cherche.
OriginalL'auteur Jim | 2014-12-19
Vous devez vous connecter pour publier un commentaire.
Comme le filtrage est très limitée, il ne permet pas normal d'expressions régulières.
Voir ici pour plus de détails.
Pour vos besoins d'utilisation:
Cela correspond à aucune lettre suivie par quelque chose, suivi par un nombre. SQL va la faire respecter la lettre et le numéro sont aux deux bouts de la chaîne, car il n'y a pas de modèle ou de caractère littéral avant ou après notre
[]
match.ColumnName COMME " [a-z]%[0-9]' ET ColumnName PAS LIKE '%[0-9][a-z]%'?
Oui @Martin, qui est en fait ce que je cherchais, et à défaut de le trouver. Je suppose que j'ai besoin de 2 déclarations séparées pour l'accomplir. Je vous remercie.
Mais je suppose que vous avez réellement besoin d'un tiers pour exclure des chaînes contenant des caractères qui ne sont ni l'alpha ni numérique
AND ColumnName NOT LIKE '%[^0-9A-Z]%'
Oui @Martin, vous avez droit à ça, et j'ai l'intention de le faire
OriginalL'auteur Jeffrey Wieder
Si vous souhaitez utiliser des Regex et ont des autorisations, vous pouvez écrire une fonction définie par l'utilisateur, pour vous donner accès aux Expressions Régulières de l'analyseur sur le serveur SQL server .NET CLR:
http://msdn.microsoft.com/en-us/magazine/cc163473.aspx (SQL 2005 et plus)
OriginalL'auteur Charles D.