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)
Où 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 | +------------+