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

MySQL SOUNDEX() Exemples

L'une des nombreuses fonctions de chaîne MySQL est le SOUNDEX() une fonction. Cette fonction renvoie une chaîne Soundex à partir d'une chaîne donnée. Si deux mots ont le même son, ils doivent avoir la même chaîne Soundex. Si deux mots semblent similaires, mais pas exactement identiques, leur chaîne Soundex peut sembler similaire mais pas exactement identique.

Cet article contient un tas d'exemples Soundex pour montrer comment le SOUNDEX() la fonction fonctionne dans MySQL.

Syntaxe

Voyons d'abord la syntaxe :

SOUNDEX(str)

str est la chaîne pour laquelle vous avez besoin de la chaîne Soundex.

Exemple

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

SELECT SOUNDEX('Sure');

Résultat :

+-----------------+
| SOUNDEX('Sure') |
+-----------------+
| S600            |
+-----------------+

Donc, dans ce cas, le mot Sure a une chaîne Soundex de S600 .

Exemple – Correspondance exacte

Voici un exemple où deux mots se prononcent de la même manière (ou très similaires) et partagent donc la même chaîne Soundex :

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 – Non correspondance

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

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

Résultat :

+-------+--------+
| Water | Coffee |
+-------+--------+
| W360  | C100   |
+-------+--------+

Comme vous pouvez le voir, la chaîne Soundex est complètement différente pour ces deux mots.

Exemple :différentes orthographes

Voici un exemple de deux mots qui ont des orthographes différentes (selon le pays d'où vous venez) :

SELECT 
  SOUNDEX('Color') AS 'Color',
  SOUNDEX('Colour') AS 'Colour';

Résultat :

+-------+--------+
| Color | Colour |
+-------+--------+
| C460  | C460   |
+-------+--------+

Nous pouvons donc voir que ces mots partageront la même chaîne Soundex (tant qu'ils sont prononcés de la même manière).

Exemple - Même son, Soundex différent

Il y a des cas où les mots ont le même son, mais ils ont des chaînes Soundex différentes. La raison la plus courante est qu'ils commencent par une lettre différente, dont l'une est une lettre muette. Vous avez peut-être remarqué dans les exemples précédents que la chaîne Soundex commence par la première lettre de la chaîne.

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 une chaîne Soundex différente.

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 chaînes Soundex différentes uniquement parce que leur première lettre est différente.

Exemple :Soundex dans une requête de base de données

Voici un exemple d'utilisation de SOUNDEX() dans une requête de base de données. Dans ce cas, nous recherchons tous les disques qui sonnent comme "Ay See Dee Ci":

SELECT ArtistName 
FROM Artists
WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci');

Résultat :

+------------+
| ArtistName |
+------------+
| AC/DC      |
+------------+

Donc AC/DC a apparemment le même code Soundex que Ay See Dee Ci (au moins lors de l'utilisation de MySQL) Juste pour être sûr, voici les codes Soundex pour ces deux chaînes :

SELECT 
  SOUNDEX('AC/DC') AS 'AC/DC',
  SOUNDEX('Ay See Dee Ci') AS 'Ay See Dee Ci';

Résultat :

+-------+---------------+
| AC/DC | Ay See Dee Ci |
+-------+---------------+
| A232  | A232          |
+-------+---------------+

Une alternative :SONNE COMME

Une requête alternative aurait pu être construite en utilisant SOUNDS LIKE au lieu du SOUNDEX() une fonction. Comme ceci :

SELECT ArtistName FROM Artists
WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';

Résultat :

+------------+
| ArtistName |
+------------+
| AC/DC      |
+------------+