Les expressions régulières à l'intérieur de SQL Server
J'ai des valeurs stockées dans ma base de données qui ressemblent à des 5XXXXXX
, où X
peut être n'importe quel chiffre. En d'autres termes, j'ai besoin de match entrant chaînes de requête SQL comme 5349878
.
Quelqu'un a une idée de comment faire?
J'ai différents cas comme XXXX7XX
par exemple, de sorte qu'il doit être générique. Je n'ai pas de soins de représenter le modèle d'une manière différente à l'intérieur de SQL Server.
Je suis en train de travailler avec le langage c# dans .NET.
Vous devez vous connecter pour publier un commentaire.
Vous ne mentionnez pas les types de données - si elle est numérique, vous devrez probablement utiliser CAST/convertir pour CONVERTIR le type de données pour [n]varchar.
Utilisation:
Références:
Utilisation:
Références:
Regex Soutien
SQL Server 2000+ prend en charge les regex, mais le hic, c'est que vous avez à créer l'UDF fonction CLR avant, vous avez la possibilité. Il ya de nombreux articles de fournir un exemple de code si vous google eux. Une fois que vous avez mis en place, vous pouvez utiliser:
5\d{6}
pour votre premier exemple\d{4}7\d{2}
pour votre deuxième exemplePour plus d'informations sur les expressions régulières, je recommande fortement ce site internet.
%7%
apparaît à plusieurs reprises ou ne PATINDEX retourner uniquement la première occurrence? E. g.X7XX7XX
, seraitPATINDEX
pas de retour de 1 au lieu de 5?Vous pouvez écrire des requêtes de ce genre dans SQL Server:
Essayer cette
Bien sûr, vous aurez besoin d'ajuster la sous-chaîne de la valeur, mais le reste devrait fonctionner...
Afin de correspondre à un chiffre, vous pouvez utiliser [0-9]. Vous pouvez utiliser 5[0-9][0-9][0-9][0-9][0-9][0-9] et [0-9][0-9][0-9][0-9]7[0-9][0-9][0-9]. Je le fais beaucoup pour les codes postaux.
SQL caractères génériques sont assez pour cela. Suivez ce lien: http://www.w3schools.com/SQL/sql_wildcards.asp
vous devez utiliser une requête comme ceci:
ou