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

Comment fonctionne SOUNDS LIKE dans MariaDB

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            |
+---------+------------------+-----------------+