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
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Ready For IT 2026 : IA industrialisée, deepfakes et Prix Start-up au cœur des enjeux
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Ready For IT 2026 : quand l’accélération de l’innovation redessine les priorités des décideurs IT
- Microsoft Build 2026 : industrialiser l’IA agentique dans les environnements d’entreprise
Articles les + lus
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
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
Analyse Patch Tuesday Mai 2026
À la une de la chaîne Tech
- 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
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
- Analyse Patch Tuesday Mai 2026
