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