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
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
- Cyberattaques : 46% des entreprises françaises perdent du chiffre d’affaires dès le premier jour
- Cybersécurité française 2026 : explosion des startups, ralentissement des scale-ups et virage stratégique de l’IA
- Le Cercle de l’Innovation décerne le Prix de l’Innovation du Public 2026
- Avec l’IA agentique, la robustesse des SI redevient stratégique
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
