Partage via


SOUNDEX (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric

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

Conventions de la syntaxe Transact-SQL

Syntaxe

SOUNDEX ( character_expression )

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 code à quatre caractères basé sur la façon dont la chaîne sonne lorsqu’elle est parlé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, Wet 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.

SOUNDEX codes provenant de différentes chaînes peuvent être comparés pour voir comment les chaînes sonnent de la même façon lorsqu’elles sont parlées. La fonction DIFFERENCE() exécute une sur deux chaînes et retourne un entier qui représente la même façon que les codes de sont pour ces chaînes.

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

Compatibilité SOUNDEX

Dans les versions précédentes de SQL Server, la fonction SOUNDEX a appliqué un sous-ensemble des règles de 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 devrez peut-être reconstruire les index, les segments de mémoire ou les contraintes CHECK qui utilisent la fonction SOUNDEX.

  • Un tas qui contient une colonne calculée persistante définie avec SOUNDEX ne peut pas être interrogé tant que le tas n’est pas reconstruit en exécutant l’instruction suivante :

    ALTER TABLE <table> REBUILD;
    
  • CHECK contraintes définies avec SOUNDEX sont désactivées lors de la mise à niveau. Pour activer la contrainte, exécutez l’instruction suivante :

    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 que l’index n’est pas reconstruit en exécutant l’instruction suivante :

    ALTER INDEX ALL ON <object> REBUILD;
    

Exemples

Un. Utiliser SOUNDEX

L’exemple suivant montre la fonction SOUNDEX et la fonction DIFFERENCE associée. Dans le premier exemple, les valeurs standard SOUNDEX sont retournées pour toutes les consonnes. Retourner la SOUNDEX pour Smith et Smythe retourne le même résultat SOUNDEX, car toutes les voyelles, la lettre y, les lettres doublées et la lettre h, ne sont pas incluses.

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

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

S530  S530

B. Utiliser LA DIFFÉRENCE

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.

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

Voici le jeu de résultats. 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. Valide pour un classement Latin1_General.

2