SOUNDEX (Transact-SQL)

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

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

Syntaxe

SOUNDEX ( character_expression )

Arguments

  • character_expression
    Est une 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. 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, SQL Server 2012 applique un ensemble de règles plus complet.

Après la mise à niveau vers le niveau de compatibilité 110, 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 l'ensemble des résultats. Valide pour un classement Latin1_General.

----- ----- 
S530  S530  

(1 row(s) affected)

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 l'ensemble des résultats. Valide pour un classement Latin1_General.

----------- 
4           

(1 row(s) affected)

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 l'ensemble des résultats. Valide pour un classement Latin1_General.

----------- 
2           

(1 row(s) affected)

Voir aussi

Référence

DIFFERENCE (Transact-SQL)

Fonctions de chaîne (Transact-SQL)

Niveau de compatibilité ALTER DATABASE (Transact-SQL)