Correspondance des modèles et extraction de texte
SQL Server 2025 ajoute de nouvelles fonctions d’expression régulière (REGEXP) et améliore la fonction pour simplifier l’utilisation SUBSTRING du texte structuré. Ces ajouts permettent aux développeurs d’effectuer des recherches de texte flexibles, d’extraire des modèles complexes et de nettoyer ou de transformer des données directement dans T-SQL sans compter sur les fonctions de script côté client ou CLR.
Vue d’ensemble des fonctions de correspondance de modèle et d’extraction de texte
La nouvelle famille REGEXP de fonctions prend en charge l’évaluation des expressions régulières directement à l’intérieur de SQL Server. Chaque fonction active des opérations de texte basées sur des modèles spécifiques.
REGEXP_LIKE
Vérifie si une chaîne correspond à un modèle d’expression régulière. Retourne 1 s’il correspond à 0 dans le cas contraire.
REGEXP_SUBSTR
Extrait la première sous-chaîne qui correspond à un modèle d’expression régulière. Utile pour extraire des informations spécifiques telles que des numéros de téléphone, des dates ou des adresses e-mail.
REGEXP_REPLACE
Recherche une chaîne pour un modèle et remplace toutes les occurrences qui correspondent au modèle. Il peut être utilisé pour le nettoyage et la mise en forme des données.
REGEXP_INSTR
Retourne la position de départ de la première sous-chaîne qui correspond au motif dans le texte donné. Idéal pour localiser les marqueurs clés dans du texte structuré.
REGEXP_COUNT
Compte le nombre de correspondances d’un modèle d’expression régulière dans une chaîne donnée. Ce nombre est utile lorsque vous devez mesurer la fréquence des modèles, telles que le comptage de chiffres, de mots ou de symboles dans le texte.
REGEXP_MATCHES
Retourne toutes les sous-chaînes qui correspondent à un modèle d’expression régulière en tant que résultat de table. À utiliser lorsque vous avez besoin de plusieurs captures à partir d’une seule chaîne, au lieu de ne prendre en compte que la première correspondance.
REGEXP_SPLIT_TO_TABLE
Fractionne une chaîne en plusieurs lignes à l’aide d’un délimiteur d’expression régulière.
Amélioration de SUBSTRING
La SUBSTRING fonction prend désormais en charge un paramètre de longueur facultatif. En cas d’omission, il extrait automatiquement de la position de début spécifiée à la fin de la chaîne, ce qui réduit la nécessité de calculs LEN() manuels.
Ensemble, ces fonctionnalités vous permettent de rechercher, d’extraire et de manipuler des modèles de texte directement dans SQL Server 2025 avec T-SQL concis et lisible.
Exemple de scénario : extraction et nettoyage des données de contact
Une équipe marketing gère une base de données de messages clients dans une colonne nommée MessageText. De nombreuses entrées incluent des numéros de téléphone dans différents formats. Vous devez extraire le premier numéro de téléphone de chaque message, le normaliser dans un format standard et identifier les messages qui contiennent des numéros de téléphone non valides.
Exemple de données
Supposons que vous disposez des exemples de données suivants dans une table appelée CustomerMessages:
| Identifiant de Message | Texte du message |
|---|---|
| 1 | « Appelez-moi à (713) 555-1298 ou au bureau 555-8811. » |
| 2 | « Contactez-moi : +1-832-555-7821 merci ! » |
| 3 | « Mon nombre est 713-555-9876 ext. 33 » |
| 4 | « Aucun téléphone n’est encore répertorié. » |
Requête : identifier, extraire et normaliser
-- Extract the first phone number pattern and format it consistently
SELECT MessageID,
REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') AS RawNumber,
REGEXP_REPLACE(
REGEXP_SUBSTR(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}'),
'\D', ''
) AS DigitsOnly,
CASE
WHEN REGEXP_LIKE(MessageText, '\d{3}[)\-\s]*\d{3}[\-\s]*\d{4}') = 1 THEN 'Valid'
ELSE 'Missing'
END AS PhoneStatus
FROM dbo.CustomerMessages;
Results
| Identifiant de message | RawNumber | DigitsOnly | PhoneStatus |
|---|---|---|---|
| 1 | (713) 555-1298 | 7135551298 | Valide |
| 2 | +1-832-555-7821 | 18325557821 | Valide |
| 3 | 713-555-9876 | 7135559876 | Valide |
| 4 | ZÉRO | ZÉRO | Manquant |
Cet exemple utilise REGEXP_SUBSTR pour extraire le premier modèle correspondant, REGEXP_REPLACE pour supprimer des caractères non numériques et REGEXP_LIKE pour vérifier les nombres valides. La requête normalise les numéros de téléphone dans un format de chiffres cohérent uniquement dans T-SQL.
Exemple 2 : fractionnement de données avec REGEXP_SPLIT_TO_TABLE et SUBSTRING
Supposons qu’une autre table, CustomerFeedbackstocke des balises séparées par des virgules décrivant les intérêts des clients. Vous souhaitez les séparer en lignes individuelles et extraire le premier mot clé pour l’indexation rapide.
SELECT FeedbackID,
value AS Tag,
SUBSTRING(value, 1) AS FirstWord
FROM CustomerFeedback
CROSS APPLY REGEXP_SPLIT_TO_TABLE(Tags, '\s*,\s*');
Cette requête fractionne chaque chaîne délimitée par des virgules en lignes tout en utilisant le nouveau SUBSTRING comportement (sans spécifier de longueur) pour extraire l’intégralité du texte restant à partir de la position de début.
Results
| FeedbackID | Tag | FirstWord |
|---|---|---|
| 1 | voyager | voyager |
| 1 | photographie | photographie |
| 2 | randonnée | randonnée |
| 2 | camping | camping |
Résumé
Les nouvelles fonctions REGEXP et la fonction SUBSTRING améliorée dans SQL Server 2025 fournissent des fonctionnalités natives de correspondance de modèles et d’extraction de texte. Ces ajouts éliminent le besoin de traitement de chaînes externes, ce qui facilite le nettoyage, l’analyse et l’analyse des données textuelles dans le moteur de base de données. Avec ces outils, les développeurs peuvent simplifier les pipelines ETL, améliorer la qualité des données et activer des analyses avancées basées sur du texte directement dans T-SQL.