Sur ma machine de test, le temps d’exécution de la requête a été de 53 secondes, dont deux secondes pour générer la sortie. Afin de mesurer le temps d’exécution sans générer la sortie, activez l’option Discard results after execution dans SQL Server Management Studio, sous Tools, Options, Query Results, SQL
CRL ou T-SQL, à chacun sa spécialité (3)
Server, Results to Grid.
Ensuite, examinez la définition de la fonction UDF CLR fn_RegexReplace dans le code C# au niveau du bloc A du listing 3 (ou le code du bloc A du listing 4 pour l’implémentation VB). La définition simple de la fonction UDF accepte trois entrées : input (chaîne en entrée), pattern (expression régulière de modèle à trouver) et replacement (modèle de chaîne de remplacement). La fonction UDF commence par déterminer si une ou plusieurs entrées ont la valeur NULL, auquel cas elle retourne un NULL.
Si aucune valeur NULL n’est identifiée, la fonction UDF appelle simplement la fonction Regex.Replace, qui gère en interne le remplacement chaîne-modèle sur la base d’expressions régulières. Pour des raisons de simplicité, je n’ai pas inclus le code de gestion des erreurs dans les routines de cet article, même si vous le feriez dans le code de production. Une raison pour laquelle cette fonction UDF est nettement plus puissante que la fonction T-SQL est le fait qu’elle supporte les expressions régulières, lesquelles sont polyvalentes.
Malheureusement, la présentation des expressions régulières sort du cadre de cet article, mais il nous suffit de dire que cette fonction UDF peut accomplir beaucoup plus que la fonction T-SQL. Maintenant, testons la fonction en exécutant la requête suivante :
SELECT Phone,
dbo.fn_RegexReplace(Phone, N’%[^0-9a-zA-Z]%’, N ») AS CleanPhone
FROM dbo.Customers;
Cette requête s’est exécutée en moins de 3 secondes sur ma machine de test, dont deux secondes pour générer la sortie. En d’autres termes, elle a été 50 fois plus rapide que la fonction UDF T-SQL.
Procédures stockées
Alors que j’étais sur le point de développer ma propre procédure stockée CLR pour illustrer ce qu’il ne faut pas faire avec du code CLR, je suis tombé sur un exemple parfait dans la documentation en ligne SQL Server 2005. La procédure stockée interroge une table, utilise une boucle pour agréger toutes les valeurs d’une des colonnes de la table et retourne la valeur de résultat dans un paraprocédure stockée d’origine, notamment en dirigeant la requête vers notre table OrderDetails comportant 1 million de lignes et en agrégeant deux colonnes, Quantity et UnitPrice, au lieu d’une seule pour retourner les deux valeurs de résultat en tant que paramètres de sortie. Vous pouvez trouver la définition de la procédure stockée CRL usp_OrderDetailsTotals dans le bloc B du listing 3 pour le code C# (ou dans le bloc B du listing 4 pour le code VB).
Téléchargez cette ressource
Mac en entreprise : le levier d’un poste de travail moderne
Ce livre blanc répond aux 9 questions clés des entreprises sur l’intégration du Mac : sécurité, compatibilité, gestion, productivité, coûts, attractivité talents, RSE et IA, et l’accompagnement sur mesure proposé par inmac wstore.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
- Deepfakes et IA : 64% des Français pensent savoir les détecter, mais la confiance reste fragile
- Cryptographie post-quantique : le Campus Cyber publie deux guides clés pour accélérer la transition des entreprises
Articles les + lus
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
À la une de la chaîne Tech
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
