Je cherche comment remplacer / encoder du texte en utilisant RegEx en fonction des paramètres / paramètres RegEx ci-dessous:
RegEx.IgnoreCase = True
RegEx.Global = True
RegEx.Pattern = "[^a-z\d\s.]+"
J'ai vu quelques exemples sur RegEx, mais je ne sais pas comment l'appliquer de la même manière dans SQL Server. Toute suggestion serait utile. Je vous remercie.
sql-server
regex
sql-server-2008
tsql
Control Freak
la source
la source
Réponses:
Vous n'avez pas besoin d'interagir avec le code managé, car vous pouvez utiliser LIKE :
Lorsque votre expression se termine,
+
vous pouvez aller avec'%[^a-z0-9 .][^a-z0-9 .]%'
EDIT : pour clarifier: SQL Server ne prend pas en charge les expressions régulières sans code managé. Selon la situation, l'
LIKE
opérateur peut être une option, mais il manque de la flexibilité que les expressions régulières offrent.la source
+
quantificateur comme{1,2}
quand il devrait le prendre comme{1, }
. Étonnamment, cela a fonctionné pour l'OP.LIKE
n'est pas une expression régulière (c'est une syntaxe de correspondance de modèle plus limitée), donc l'absence de prise en charge de l'expression régulière ne signifie pas que cela ne fonctionnera pas.Version légèrement modifiée de la réponse de Julio.
Vous aurez besoin des procédures d'automatisation Ole activées dans SQL:
la source
Vous devrez créer une procédure CLR qui fournit des fonctionnalités regex, comme l' illustre cet article .
Leur exemple de fonction utilise VB.NET:
... et est installé dans SQL Server à l'aide du SQL suivant (en remplaçant les variables délimitées par '%' par leurs équivalents réels:
la source
Utilisation d'expressions régulières dans l'implémentation de bases de données SQL Server
Expression régulière - Description
. Correspond à n'importe quel caractère
* Correspond à n'importe quel caractère
+ Correspond à au moins une instance de l'expression avant
^ Début au début de la ligne
$ Recherche à la fin de la ligne
< Correspondance uniquement si le mot commence à ce point
> Correspond uniquement si le mot s'arrête à ce point
\ n Correspond à un saut de ligne
[] Correspond à n'importe quel caractère entre crochets
[^ ...] Correspond à tout caractère non répertorié après ^
[ABQ]% La chaîne doit commencer par les lettres A, B ou Q et peut être de n'importe quelle longueur
[A B C D]% La chaîne doit avoir une longueur de deux ou plus et qui doit commencer par A ou B et avoir C ou D comme deuxième caractère
[AZ]% La chaîne peut être de n'importe quelle longueur et doit commencer par n'importe quelle lettre de A à Z
[A -Z0-9]% La chaîne peut être de n'importe quelle longueur et doit commencer par n'importe quelle lettre de A à Z ou par un chiffre de 0 à 9
[^ AC]% La chaîne peut être de n'importe quelle longueur mais ne peut pas commencer par les lettres A à C
% [AZ] La chaîne peut être de n'importe quelle longueur et doit se terminer par l'une des lettres de A à Z
% [% $ # @]% La chaîne peut être de n'importe quelle longueur et doit contenir au moins un des caractères spéciaux entre le support
la source
Ou une autre expression au lieu de AZ
la source
Une approche similaire à la réponse de @ mwigdahl, vous pouvez également implémenter un CLR .NET en C #, avec un code tel que;
Les instructions d'installation peuvent être trouvées ici
la source