Supposons que vous ayez besoin d’effectuer un remplacement de chaînes complexe à partir de modèles. La fonction T-SQL REPLACE accepte trois arguments de chaîne de caractères (appelons-les str1, str2 et str3). Elle remplace toutes les occurrences de str2 dans str1 par str3. Néanmoins, str2 et str3 sont des chaînes constantes,
CRL ou T-SQL, à chacun sa spécialité (2)
pas des modèles. T-SQL ne possède pas de fonction intégrée permettant de remplacer toutes les occurrences d’un modèle par un autre modèle.
Par exemple, considérons la colonne Phone (téléphone) dans la table Customers créée précédemment. Supposons que vous souhaitiez supprimer tous les caractères spéciaux de la colonne Phone, autrement dit les caractères qui ne sont pas un chiffre (0-9) ou une lettre (a-Z ou A-Z). Ce type de remplacement peut être nécessaire afin d’identifier les doublons « logiques » de numéros de téléphone, à savoir des numéros identiques saisis avec de légères variations. Par exemple, les numéros (503) 555-7555, 503-555-7555 et 503.555.7555 doivent être considérés comme identiques. Il en va de même pour le numéro 555- FILM et 555 FILM, alors que 555-FILM et 555-FILK doivent être traités comme différents.
Lorsque vous éliminez les caractères spéciaux des numéros de téléphone, vous obtenez des chaînes telles que 5035557555 et 555FILM, que vous pouvez comparer afin de déterminer l’unicité logique. Commençons par l’implémentation T-SQL de la fonction UDF fn_RemoveChars, illustrée sur le listing 2. La fonction UDF accepte les entrées @string et @pattern, et supprime dans @string toutes les occurrences de caractères correspondant au modèle fourni pour @pattern. La fonction UDF s’appuie principalement sur la fonction intégrée PATINDEX, laquelle retourne la première position d’un modèle dans une chaîne.
Pour exécuter l’itération à travers les occurrences du modèle, la fonction UDF appelle PATINDEX dans une boucle et supprime le caractère lorsqu’elle trouve le modèle. Il est difficile d’éviter la logique itérative pour implémenter cette tâche. Par ailleurs, la fonctionnalité UDF est limitée car elle supprime les caractères uniquement lorsqu’elle trouve le modèle. Il est également difficile de remplacer les modèles par un autre au lieu d’une chaîne constante. Avant de tester la fonction UDF, exécutez le code suivant afin d’entrer le contexte de la base de données TSQLCLR et d’activer l’option de session STATISTICS TIME :
USE TSQLCLR;
SET STATISTICS TIME ON;
Ensuite, exécutez la requête suivante, laquelle élimine tous les caractères spéciaux des numéros de téléphone dans les 100 000 lignes de la table Customers :
SELECT Phone,
dbo.fn_RemoveChars(Phone,
N’%[^0-9a-zA-Z]%’) AS CleanPhone
FROM dbo.Customers;
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
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
