MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come SUONA COME funziona in MariaDB

In MariaDB, puoi usare SOUNDS LIKE in una query per abbinare parole che suonano allo stesso modo.

Sintassi

La sintassi è questa:

expr1 SOUNDS LIKE expr2

È come fare questo:SOUNDEX(expr1) = SOUNDEX(expr2) .

Soundex è un algoritmo fonetico per l'indicizzazione dei nomi in base al suono, pronunciato in inglese. Se due parole suonano allo stesso modo, dovrebbero avere la stessa stringa Soundex. Se due parole suonano simili, ma non esattamente uguali, la loro stringa Soundex potrebbe sembrare simile ma non esattamente la stessa.

Esempio

Ecco un esempio di base:

SELECT 'Two' SOUNDS LIKE 'Too';

Risultato:

+-------------------------+
| 'Two' SOUNDS LIKE 'Too' |
+-------------------------+
|                       1 |
+-------------------------+

In questo caso, le due parole suonano allo stesso modo.

Possiamo usare il SOUNDEX() funzione per restituire la stringa Soundex di ogni parola:

SELECT 
    SOUNDEX('Two'),
    SOUNDEX('Too');

Risultato:

+----------------+----------------+
| SOUNDEX('Two') | SOUNDEX('Too') |
+----------------+----------------+
| T000           | T000           |
+----------------+----------------+

Le corde Soundex sono identiche. Ecco perché SOUNDS LIKE restituito 1 .

Nessuna corrispondenza

Ecco un esempio di due parole che non suonano allo stesso modo:

SELECT 'Cat' SOUNDS LIKE 'Dog';

Risultato:

+-------------------------+
| 'Cat' SOUNDS LIKE 'Dog' |
+-------------------------+
|                       0 |
+-------------------------+

In questo caso abbiamo 0 , perché le parole non suonano allo stesso modo. Presumibilmente, le loro corde Soundex sono diverse. Scopriamolo:

SELECT 
    SOUNDEX('Cat'),
    SOUNDEX('Dog');

Risultato:

+----------------+----------------+
| SOUNDEX('Cat') | SOUNDEX('Dog') |
+----------------+----------------+
| C300           | D200           |
+----------------+----------------+

Sì. Corde Soundex diverse.

Esempio di database

Ecco un esempio di utilizzo di SOUNDS LIKE nel WHERE clausola di una query di database:

SELECT 
    PetName, 
    SOUNDEX(PetName),
    SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg';

Risultato:

+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag     | W200             | W200            |
+---------+------------------+-----------------+

Qui sta usando il SOUNDEX() funzione per fare la stessa cosa:

SELECT 
    PetName, 
    SOUNDEX(PetName),
    SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');

Risultato:

+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag     | W200             | W200            |
+---------+------------------+-----------------+