Comment faire pour utiliser une Expression Régulière dans sql server?
Est-il possible de faire des requêtes performantes que l'utilisation d'expression régulière de fonctionnalités.J'ai obtenu des données dans ma table qui n'est pas dans le bon format,EX:-Dans le Titre de la colonne: Câble 180â”â– " À 90â”â–‘ Câble Serial ATA et dans la colonne Id de 123234+ de données dans le format exponentiel,il est possible de faire des requêtes à l'aide d'une expression régulière dans Sqlserver2008.
- vous pouvez utiliser patindex, ce n'est pas une alternative de REgExp, mais peut être utile
- Patindex retourne la valeur zéro cas où la trouver,je veux supprimer les enregistrements,il n'est pas si utile.
- double possible de SQL Server expressions régulières
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de faire usage de la suite. Nécessite généralement des combinaisons de trois:
patindex
charindex
substring
En réponse à votre commentaire ci-dessus,
patindex
ne devrait pas 0, où le cas est trouvé.patindex
trouve l'emplacement de départ du modèle spécifié, donc sipatindex
trouve le cas, il doit retourner un entier > 0.EDIT:
Aussi,
len(string)
etreverse(string)
venir dans maniable à des occasions spécifiques.Avec le CLR et .Projet NET publié de SQL Server, il est EXTRÊMEMENT efficace. Après avoir commencé à utiliser un CLR Projet VB.Net avec notre 2005 de SQL Server au cours des 2 dernières années, j'ai constaté que chaque occurrence d'une Fonction Scalaire dans TSQL pour lequel j'ai remplacé par de la .NET version, il a considérablement amélioré les performances. Je l'ai utilisé pour l'avancée de la date de la manipulation, la mise en forme et l'analyse, la mise en forme de Chaîne et de l'analyse, Hachage MD5 génération, les longueurs de Vecteur, Chaîne de REJOINDRE Aggragate fonction Split fonction à valeur de Table, et même le chargement en vrac à partir de tables de données sérialisées par l'intermédiaire d'un dossier de partage (ce qui est étonnamment rapide).
Pour les RegEx, car il n'est pas déjà présent, je ne peux que supposer que c'est aussi efficace qu'un EXE compilé serait faire la même chose REGEX, c'est à dire extrêmement rapide.
Je vais partager un fichier de code à partir de mon VB.Net CLR projet qui permet à certains RegEx fonctionnalité.
Ce code serait partie d'une .NET CLR DLL qui est publié sur votre serveur.
Fonction Résumé
Regex_IsMatch(Données,Parttern,Options), tinyint (0/1) de
Par exemple. SELECT dbo.Regex_IsMatch('Darren','[trwq]fr$',NULL) -- renvoie 1 /vrai
Regex_Group(données,motif,groupname,options), nvarchar(max) (groupe de capture de la valeur retournée)
Par exemple. SELECT dbo.Regex_Group('Câble de 180+e10 à 120+e3',' (?[0-9]+)+e[0-9]+','n',NULL) -- renvoie '180'
Regex_Replace(de données,de motif,de remplacement,options), nvarchar(max) (renvoie la chaîne modifiée)
Par exemple. SELECT dbo.Regex_Replace('Câble de 180+e10 à 120+e3',' (?[0-9]+)+e(?[0-9]+)',' ${e}:${n]',NULL) -- renvoie 'Câble 10:180 à 3:120'