Dans MariaDB, vous pouvez utiliser SOUNDS LIKE
dans une requête pour faire correspondre des mots qui se ressemblent.
Syntaxe
La syntaxe ressemble à ceci :
expr1 SOUNDS LIKE expr2
Cela revient au même que de faire ceci :SOUNDEX(expr1) = SOUNDEX(expr2)
.
Soundex est un algorithme phonétique permettant d'indexer les noms par son, tel qu'il se prononce en anglais. 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.
Exemple
Voici un exemple de base :
SELECT 'Two' SOUNDS LIKE 'Too';
Résultat :
+-------------------------+ | 'Two' SOUNDS LIKE 'Too' | +-------------------------+ | 1 | +-------------------------+
Dans ce cas, les deux mots sonnent de la même manière.
Nous pouvons utiliser le SOUNDEX()
fonction pour renvoyer la chaîne Soundex de chaque mot :
SELECT
SOUNDEX('Two'),
SOUNDEX('Too');
Résultat :
+----------------+----------------+ | SOUNDEX('Two') | SOUNDEX('Too') | +----------------+----------------+ | T000 | T000 | +----------------+----------------+
Les cordes Soundex sont identiques. C'est pourquoi SOUNDS LIKE
a renvoyé 1
.
Aucune correspondance
Voici un exemple de deux mots qui ne se prononcent pas de la même façon :
SELECT 'Cat' SOUNDS LIKE 'Dog';
Résultat :
+-------------------------+ | 'Cat' SOUNDS LIKE 'Dog' | +-------------------------+ | 0 | +-------------------------+
Dans ce cas, nous avons 0
, parce que les mots ne sonnent pas de la même manière. Vraisemblablement, leurs cordes Soundex sont différentes. Découvrons :
SELECT
SOUNDEX('Cat'),
SOUNDEX('Dog');
Résultat :
+----------------+----------------+ | SOUNDEX('Cat') | SOUNDEX('Dog') | +----------------+----------------+ | C300 | D200 | +----------------+----------------+
Ouais. Différentes chaînes Soundex.
Exemple de base de données
Voici un exemple d'utilisation de SOUNDS LIKE
dans le WHERE
clause d'une requête de base de données :
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg';
Résultat :
+---------+------------------+-----------------+ | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') | +---------+------------------+-----------------+ | Wag | W200 | W200 | +---------+------------------+-----------------+
Ici, il utilise le SOUNDEX()
fonction pour faire la même chose :
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');
Résultat :
+---------+------------------+-----------------+ | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') | +---------+------------------+-----------------+ | Wag | W200 | W200 | +---------+------------------+-----------------+