SOUNDEX (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Point de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Retourne un code à quatre caractères (SOUNDEX) pour évaluer la similitude entre deux chaînes.

Conventions de la syntaxe Transact-SQL

Syntaxe

SOUNDEX ( character_expression )  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

expression_caractère
Expression alphanumérique de données caractères. character_expression peut être une constante, une variable ou une colonne.

Types de retour

varchar

Notes

SOUNDEX convertit une chaîne alphanumérique en un code à quatre caractères basé sur la façon dont la chaîne est énoncée en anglais. Le premier caractère du code est le premier caractère de character_expression, converti en majuscules. Les deuxième et quatrième caractères de ce code sont des chiffres qui représentent des lettres dans l'expression. Les lettres A, E, I, O, U, H, W et Y sont ignorées sauf s'il s'agit de la première lettre de la chaîne. Les zéros sont ajoutés à la fin si nécessaire pour produire un code à quatre caractères. Pour plus d’informations sur le code SOUNDEX, consultez le Système d’indexation Soundex.

Les codes SOUNDEX de chaînes individuelles peuvent être comparés pour voir comment sont énoncées les chaînes similaires. La fonction DIFFERENCE effectue un SOUNDEX sur deux chaînes, et retourne un entier qui représente le degré de similitude des codes SOUNDEX pour ces chaînes.

SOUNDEX respecte le classement. Il est possible d'imbriquer des fonctions de chaîne.

Compatibilité SOUNDEX

Dans les versions antérieures de SQL Server, la fonction SOUNDEX appliquait un sous-ensemble des règles SOUNDEX. Lorsque le niveau de compatibilité de la base de données est 110 ou supérieur, SQL Server applique un ensemble de règles plus complet.

Après la mise à niveau vers le niveau de compatibilité 110 ou supérieur, vous pouvez être amené à reconstruire les index, les segments de mémoire ou les contraintes CHECK qui utilisent la fonction SOUNDEX.

  • Un segment de mémoire qui contient une colonne calculée persistante définie avec SOUNDEX ne peut pas être interrogé tant qu'il n'a pas été reconstruit en exécutant l'instruction ALTER TABLE <table> REBUILD.

  • Les contraintes CHECK définies avec SOUNDEX sont désactivées lors de la mise à niveau. Pour activer la contrainte, exécutez l'instruction ALTER TABLE <table> WITH CHECK CHECK CONSTRAINT ALL.

  • Les index (y compris les vues indexées) qui contiennent une colonne calculée persistante définie avec SOUNDEX ne peuvent pas être interrogés tant qu'ils n'ont pas été reconstruits en exécutant l'instruction ALTER INDEX ALL ON <object> REBUILD.

Exemples

L'exemple suivant illustre la fonction SOUNDEX et la fonction associée DIFFERENCE. Dans le premier exemple, les valeurs standard SOUNDEX sont retournées pour toutes les consonnes. La fonction SOUNDEX exécutée sur Smith et Smythe retourne le même résultat SOUNDEX parce que toutes les voyelles, la lettre « y », les lettres doubles et la lettre « h » ne sont pas comprises.

-- Using SOUNDEX  
SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe');  

Voici le jeu de résultats obtenu. Valide pour un classement Latin1_General.

S530  S530    

La fonction DIFFERENCE calcule la différence des résultats du modèle SOUNDEX. L'exemple suivant illustre deux chaînes de caractères qui ne diffèrent que par les voyelles. La différence retournée est 4, soit la plus petite différence possible.

-- Using DIFFERENCE  
SELECT DIFFERENCE('Smithers', 'Smythers');  
GO  

Voici le jeu de résultats obtenu. Valide pour un classement Latin1_General.

4             

Dans l'exemple suivant, les chaînes de caractères diffèrent par leurs consonnes ; la valeur retournée est donc 2, soit la différence la plus importante.

SELECT DIFFERENCE('Anothers', 'Brothers');  
GO  

Voici le jeu de résultats obtenu. Valide pour un classement Latin1_General.

2             

Voir aussi

DIFFERENCE (Transact-SQL)
Fonctions de chaîne (Transact-SQL)
Niveau de compatibilité ALTER DATABASE (Transact-SQL)