Fonctions d’encodage et de similarité
SQL Server 2025 introduit de nouvelles fonctions pour l’encodage de chaîne et la mesure de similarité. Ces fonctionnalités prennent en charge la transformation sécurisée des données, la correspondance approximative et les comparaisons en langage naturel directement dans T-SQL.
Ils facilitent la détection des doublons, la normalisation des enregistrements ou la recherche de correspondances proches sans compter sur des outils externes ou des fonctions définies par l’utilisateur.
Vue d’ensemble des fonctions d’encodage et de similarité
BASE64_ENCODE
Convertit une chaîne ou une valeur binaire au format Base64. Couramment utilisé pour encoder des informations d’identification, des données binaires ou du texte qui doivent être stockés ou transmis en toute sécurité via des API JSON ou web.
BASE64_DECODE
Inverse l’encodage, en convertissant le texte encodé en Base64 dans sa forme d’origine.
Ensemble, ces deux fonctions permettent de gérer l’échange de données sécurisé et portable entre SQL Server et d’autres systèmes.
STRING_SIMILARITY
Retourne un score de similarité (compris entre 0,0 et 1,0) comparant deux chaînes basées sur des séquences de caractères.
Un score élevé signifie que les deux chaînes se ressemblent plus.
EDIT_DISTANCE
Calcule le nombre de modifications à caractère unique (insertions, suppressions ou substitutions) nécessaires pour modifier une chaîne en une autre.
EDIT_DISTANCE_SIMILARITY
Convertit la distance de modification en score de similarité, où 1,0 représente une correspondance exacte et 0,0 signifie aucune similarité.
JARO_WINKLER_DISTANCE
Mesure la distance entre deux chaînes en fonction des transpositions et des correspondances de préfixe. Couramment utilisé pour comparer des noms ou des identificateurs courts.
JARO_WINKLER_SIMILARITY
Retourne un score de similarité compris entre 0,0 et 1,0 à l’aide de l’algorithme Jaro-Winkler, en mettant l’accent sur la similarité au début des chaînes.
Il est utile de faire correspondre des noms, des enregistrements d’entreprise ou des entrées utilisateur susceptibles de contenir des fautes de frappe.
Exemple 1 : Encoder et décoder des données sensibles
Un administrateur système souhaite stocker des clés API sous forme encodée afin d’éviter une exposition accidentelle pendant les audits ou les exportations. Les clés peuvent être encodées en Base64 avant d’être écrites dans une table de configuration.
Requête : Encoder et décoder l’exemple
DECLARE @ApiKey NVARCHAR(100) = 'AppKey-2025-SECURE';
DECLARE @Encoded NVARCHAR(MAX);
DECLARE @Decoded NVARCHAR(MAX);
-- Encode the API key
SET @Encoded = BASE64_ENCODE(@ApiKey);
-- Decode it back
SET @Decoded = BASE64_DECODE(@Encoded);
SELECT @ApiKey AS OriginalValue, @Encoded AS EncodedValue, @Decoded AS DecodedValue;
Results
| OriginalValue | EncodedValue | DecodedValue |
|---|---|---|
| AppKey-2025-SECURE | QXBwS2V5LTIwMjUtU0VDVVJF | AppKey-2025-SECURE |
Cet exemple montre comment les données peuvent être encodées en toute sécurité pour le stockage ou le transfert et décodées si nécessaire, dans T-SQL.
Exemple 2 : Comparer des chaînes pour la similarité
Un ingénieur de qualité des données doit détecter les entrées en quasi-double dans une table client causée par une entrée de données incohérente.
À l’aide des fonctions de similarité de SQL Server 2025, il est possible d’identifier les enregistrements qui diffèrent légèrement, tels que les fautes de frappe ou les espaces supplémentaires.
Exemple de données
| CustomerID | Nom du client |
|---|---|
| 1 | Jonathon Smith |
| 2 | Jonathan Smith |
| 3 | J. Smith |
| 4 | John Smith |
Requête : comparer des noms avec des fonctions de similarité
SELECT
A.CustomerName AS NameA,
B.CustomerName AS NameB,
STRING_SIMILARITY(A.CustomerName, B.CustomerName) AS SimilarityScore,
EDIT_DISTANCE(A.CustomerName, B.CustomerName) AS EditSteps,
JARO_WINKLER_SIMILARITY(A.CustomerName, B.CustomerName) AS JaroScore
FROM dbo.Customers A
JOIN dbo.Customers B
ON A.CustomerID < B.CustomerID
ORDER BY SimilarityScore DESC;
Results
| NameA | NameB | Score de similarité | EditSteps | JaroScore |
|---|---|---|---|---|
| Jonathon Smith | Jonathan Smith | 0.93 | 1 | 0,94 |
| Jonathan Smith | John Smith | 0.77 | 4 | 0.79 |
| Jonathon Smith | J. Smith | 0.68 | 6 | 0.70 |
| J. Smith | John Smith | 0,62 | 5 | 0.66 |
Cette sortie montre que « Jonathon Smith » et « Jonathan Smith » sont pratiquement identiques, tandis que « J. Smith » et « John Smith » partagent des similitudes partielles.
Ces scores peuvent aider à identifier les doublons probables avant de fusionner ou de nettoyer les données.
Exemple 3 : combinaison de l’encodage et de la similarité
Dans certains systèmes, les identificateurs codés doivent être comparés indirectement. En décodant puis en appliquant la similarité, vous pouvez toujours détecter des modèles ou des doublons entre les données encodées.
DECLARE @Encoded1 NVARCHAR(MAX) = BASE64_ENCODE('User-713');
DECLARE @Encoded2 NVARCHAR(MAX) = BASE64_ENCODE('User-713X');
SELECT
@Encoded1 AS EncodedA,
@Encoded2 AS EncodedB,
STRING_SIMILARITY(
BASE64_DECODE(@Encoded1),
BASE64_DECODE(@Encoded2)
) AS SimilarityScore;
Résultat
| EncodedA | EncodedB | Score de similarité |
|---|---|---|
| VXNlci03MTM= | VXNlci03MTNY | 0.93 |
Cet exemple montre que même après le décodage des valeurs Base64, SQL Server peut calculer des scores de similarité sans couches de traitement supplémentaires.
Résumé
SQL Server 2025 étend T-SQL avec des fonctions intégrées pour l’encodage base64 et l’analyse de similarité de chaîne.
Les développeurs peuvent désormais encoder, décoder et comparer des chaînes directement dans les requêtes SQL pour améliorer la qualité des données, détecter des doublons et gérer des transformations de texte sécurisées.
Ces outils simplifient les tâches qui nécessitaient auparavant des scripts externes ou l’intégration clR, ce qui améliore les performances et la facilité de maintenance des charges de travail volumineuses de texte.