Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à : SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Utilisez une correspondance floue pour vérifier si deux chaînes sont similaires et calculer la différence entre deux chaînes. Utilisez cette fonctionnalité pour identifier les chaînes susceptibles d’être différentes en raison d’une altération des caractères. La corruption comprend des erreurs orthographiques, des caractères transposes, des caractères manquants ou des abréviations. La correspondance de chaîne approximative utilise des algorithmes pour détecter des chaînes qui se prononcent de manière similaire.
Remarque
La correspondance de chaîne approximative est actuellement en préversion pour SQL Server 2025 (17.x) et nécessite l’activation de la configuration étendue de la base de données de fonctionnalités en préversion.
La correspondance de chaîne approximative est disponible dans Azure SQL Managed Instance avec la stratégie de mise à joursql Server 2025 ou Always-up-to-date.
Fonctions floues
| Fonction | Descriptif |
|---|---|
| EDIT_DISTANCE | Calcule le nombre d’insertion, de suppression, de substitution et de transposition nécessaires pour transformer une chaîne en une autre. |
| EDIT_DISTANCE_SIMILARITY | Calcule une valeur de similarité allant de 0 (aucune correspondance) à 100 (correspondance parfaite). |
| JARO_WINKLER_DISTANCE | Calcule la distance d’édition entre deux chaînes, en favorisant celles qui correspondent depuis le début pour une longueur de préfixe donnée. |
| JARO_WINKLER_SIMILARITY | Calcule une valeur de similarité allant de 0 (aucune correspondance) à 100 (correspondance parfaite). |
Remarque
Actuellement, les fonctions ne respectent pas la sémantique de comparaison définie par les paramètres de classement, tels que l’insensitivité de cas et d’autres règles spécifiques au classement. Une fois la prise en charge des règles de classement implémentée, la sortie des fonctions reflète ces sémantiques et peut changer en conséquence.
Exemples
Les exemples suivants illustrent les fonctions de correspondance floue de chaînes.
Exemple de tableau
Avant de pouvoir exécuter des exemples de requêtes, créez et remplissez un exemple de table.
Pour créer et remplir l’exemple de table, connectez-vous à une base de données utilisateur hors production et exécutez le script suivant :
-- Step 1: Create the table
CREATE TABLE WordPairs
(
WordID INT IDENTITY (1, 1) PRIMARY KEY, -- Auto-incrementing ID
WordUK NVARCHAR (50), -- UK English word
WordUS NVARCHAR (50) -- US English word
);
-- Step 2: Insert the data
INSERT INTO WordPairs (WordUK, WordUS)
VALUES ('Colour', 'Color'),
('Flavour', 'Flavor'),
('Centre', 'Center'),
('Theatre', 'Theater'),
('Organise', 'Organize'),
('Analyse', 'Analyze'),
('Catalogue', 'Catalog'),
('Programme', 'Program'),
('Metre', 'Meter'),
('Honour', 'Honor'),
('Neighbour', 'Neighbor'),
('Travelling', 'Traveling'),
('Grey', 'Gray'),
('Defence', 'Defense'),
('Practise', 'Practice'), -- Verb form in UK
('Practice', 'Practice'), -- Noun form in both
('Aluminium', 'Aluminum'),
('Cheque', 'Check'); -- Bank cheque vs. check
Exemple EDIT_DISTANCE
SELECT WordUK,
WordUS,
EDIT_DISTANCE(WordUK, WordUS) AS Distance
FROM WordPairs
WHERE EDIT_DISTANCE(WordUK, WordUS) <= 2
ORDER BY Distance ASC;
Retours :
WordUK WordUS Distance
------------------------------ ------------------------------ -----------
Practice Practice 0
Aluminium Aluminum 1
Honour Honor 1
Neighbour Neighbor 1
Travelling Traveling 1
Grey Gray 1
Defence Defense 1
Practise Practice 1
Colour Color 1
Flavour Flavor 1
Organise Organize 1
Analyse Analyze 1
Catalogue Catalog 2
Programme Program 2
Metre Meter 2
Centre Center 2
Theatre Theater 2
Exemple EDIT_DISTANCE_SIMILARITY
SELECT WordUK,
WordUS,
EDIT_DISTANCE_SIMILARITY(WordUK, WordUS) AS Similarity
FROM WordPairs
WHERE EDIT_DISTANCE_SIMILARITY(WordUK, WordUS) >= 75
ORDER BY Similarity DESC;
Retours :
WordUK WordUS Similarity
------------------------------ ------------------------------ -----------
Practice Practice 100
Travelling Traveling 90
Aluminium Aluminum 89
Neighbour Neighbor 89
Organise Organize 88
Practise Practice 88
Defence Defense 86
Analyse Analyze 86
Flavour Flavor 86
Colour Color 83
Honour Honor 83
Catalogue Catalog 78
Programme Program 78
Grey Gray 75
Exemple JARO_WINKLER_DISTANCE
SELECT WordUK,
WordUS,
JARO_WINKLER_DISTANCE(WordUK, WordUS) AS Distance
FROM WordPairs
WHERE JARO_WINKLER_DISTANCE(WordUK, WordUS) <= .05
ORDER BY Distance ASC;
Retours :
WordUK WordUS Distance
------------------------------ ------------------------------ -----------
Practice Practice 0
Travelling Traveling 0.02
Neighbour Neighbor 0.0222222222222223
Aluminium Aluminum 0.0222222222222223
Theatre Theater 0.0285714285714286
Flavour Flavor 0.0285714285714286
Centre Center 0.0333333333333333
Colour Color 0.0333333333333333
Honour Honor 0.0333333333333333
Catalogue Catalog 0.0444444444444444
Programme Program 0.0444444444444444
Metre Meter 0.0466666666666667
Exemple JARO_WINKLER_SIMILARITY
SELECT WordUK,
WordUS,
JARO_WINKLER_SIMILARITY(WordUK, WordUS) AS Similarity
FROM WordPairs
WHERE JARO_WINKLER_SIMILARITY(WordUK, WordUS) > 90
ORDER BY Similarity DESC;
Retours :
WordUK WordUS Similarity
------------------------------ ------------------------------ -----------
Practice Practice 100
Aluminium Aluminum 98
Neighbour Neighbor 98
Travelling Traveling 98
Colour Color 97
Flavour Flavor 97
Centre Center 97
Theatre Theater 97
Honour Honor 97
Catalogue Catalog 96
Programme Program 96
Metre Meter 95
Organise Organize 95
Practise Practice 95
Analyse Analyze 94
Defence Defense 94
Exemple de requête avec toutes les fonctions
La requête suivante illustre toutes les fonctions d’expression régulière actuellement disponibles.
SELECT T.source_string,
T.target_string,
EDIT_DISTANCE(T.source_string, T.target_string) AS ED_Distance,
JARO_WINKLER_DISTANCE(T.source_string, T.target_string) AS JW_Distance,
EDIT_DISTANCE_SIMILARITY(T.source_string, T.target_string) AS ED_Similarity,
JARO_WINKLER_SIMILARITY(T.source_string, T.target_string) AS JW_Similarity
FROM (VALUES ('Black', 'Red'),
('Colour', 'Yellow'),
('Colour', 'Color'),
('Microsoft', 'Msft'),
('Regex', 'Regex')
) AS T(source_string, target_string);
Retours :
source_string target_string ED_Distance JW_Distance ED_Similarity JW_Similarity
-------------- -------------- -------------- --------------------- -------------- --------------
Black Red 5 1 0 0
Colour Yellow 5 0.444444444444445 17 55
Colour Color 1 0.0333333333333333 83 96
Microsoft Msft 5 0.491666666666667 44 50
Regex Regex 0 0 100 100
Nettoyage
Une fois que vous avez terminé d’utiliser les exemples de données, supprimez l’exemple de table :
IF OBJECT_ID('dbo.WordPairs', 'U') IS NOT NULL
BEGIN
DROP TABLE dbo.WordPairs;
END