Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Fonctionnement de la fonction SQL Server SOUNDEX()

Soundex est un algorithme phonétique permettant d'indexer les noms par son, tel qu'il se prononce en anglais. Il a été développé et breveté en 1918 et 1922.

L'une des fonctions disponibles dans SQL Server est SOUNDEX() fonction, qui renvoie le code Soundex pour une chaîne donnée.

Syntaxe

La syntaxe ressemble à ceci :

SOUNDEX ( character_expression )

character_expression est le mot ou la chaîne pour laquelle vous voulez le code Soundex. Il peut s'agir d'une constante, d'une variable ou d'une colonne.

Le SOUNDEX() la fonction est sensible au classement et les fonctions de chaîne peuvent être imbriquées.

Le code Soundex

Comme mentionné, le SOUNDEX() La fonction renvoie le code Soundex pour la chaîne donnée. Le code Soundex est un code à quatre caractères basé sur le son de la chaîne lorsqu'elle est prononcée. Voici un exemple de code Soundex :

S600

Voici comment un code Soundex est construit :

  • Le premier caractère du code est le premier caractère de la chaîne, converti en majuscule. Ainsi, dans l'exemple ci-dessus, nous savons que la chaîne commence par la lettre S (minuscule ou majuscule).
  • Les deuxième à quatrième caractères du code sont des nombres qui représentent les lettres de 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.
  • Des zéros sont ajoutés à la fin si nécessaire pour produire un code à quatre caractères.

Exemple

Voici un exemple de récupération de la chaîne Soundex à partir d'une chaîne :

SELECT SOUNDEX('Sure');

Résultat :

S600

Nous pouvons donc voir que le mot Sure a un code Soundex de S600 .

Exemple de deux mots correspondants

Voici un exemple où deux mots partagent le même code Soundex (parce qu'ils se prononcent de la même manière) :

SELECT 
    SOUNDEX('Sure') AS Sure, 
    SOUNDEX('Shore') AS Shore;

Résultat :

Sure  Shore
----  -----
S600  S600

Voici quelques exemples de correspondances plus exactes :

SELECT 
    SOUNDEX('Dam') AS Dam,
    SOUNDEX('Damn') AS Damn,
    SOUNDEX('Too') AS Too,
    SOUNDEX('Two') AS Two;

Résultat :

Dam   Damn  Too   Two 
----  ----  ----  ----
D500  D500  T000  T000

Exemple de mots qui ne correspondent pas

Voici un exemple où deux mots ne se prononcent pas de la même manière et ont donc des codes Soundex différents :

SELECT 
    SOUNDEX('Water') AS Water, 
    SOUNDEX('Coffee') AS Coffee;

Résultat :

Water  Coffee
-----  ------
W360   C100

Mots avec des orthographes différentes

Certains mots ont une orthographe différente selon le pays d'où vous venez. Ces mots partageront le même code Soundex :

SELECT 
  SOUNDEX('Flavor') AS 'Flavor',
  SOUNDEX('Flavour') AS 'Flavour';

Résultat :

Flavor  Flavour
------  -------
F416    F416

Même son, code Soundex différent

Parfois, deux mots ont le même son, mais ils ont des codes Soundex différents. La raison la plus courante est qu'ils commencent par une lettre différente (on utilise une lettre muette). Comme mentionné, le code Soundex commence par la première lettre de la chaîne (convertie en majuscule). Par conséquent, si vous avez deux mots qui se prononcent exactement de la même manière, mais qui commencent par une lettre différente, ils auront un code Soundex différent.

Voici quelques exemples :

SELECT
    SOUNDEX('Hole') AS 'Hole',
    SOUNDEX('Whole') AS 'Whole',
    SOUNDEX('Our') AS Our,
    SOUNDEX('Hour') AS Hour;

Résultat :

Hole  Whole  Our   Hour
----  -----  ----  ----
H400  W400   O600  H600

Les paires de cet exemple ont des codes Soundex différents uniquement parce que leur première lettre est différente.