I MariaDB kan du bruge SOUNDS LIKE i en forespørgsel for at matche ord, der lyder ens.
Syntaks
Syntaksen ser sådan ud:
expr1 SOUNDS LIKE expr2
Det er det samme som at gøre dette:SOUNDEX(expr1) = SOUNDEX(expr2) .
Soundex er en fonetisk algoritme til at indeksere navne efter lyd, som udtales på engelsk. Hvis to ord lyder ens, skal de have den samme Soundex-streng. Hvis to ord lyder ens, men ikke helt ens, kan deres Soundex-streng ligne, men ikke helt ens.
Eksempel
Her er et grundlæggende eksempel:
SELECT 'Two' SOUNDS LIKE 'Too'; Resultat:
+-------------------------+ | 'Two' SOUNDS LIKE 'Too' | +-------------------------+ | 1 | +-------------------------+
I dette tilfælde lyder de to ord ens.
Vi kan bruge SOUNDEX() funktion for at returnere Soundex-strengen for hvert ord:
SELECT
SOUNDEX('Two'),
SOUNDEX('Too'); Resultat:
+----------------+----------------+
| SOUNDEX('Two') | SOUNDEX('Too') |
+----------------+----------------+
| T000 | T000 |
+----------------+----------------+
Soundex-strengene er identiske. Det er derfor SOUNDS LIKE returnerede 1 .
Ingen match
Her er et eksempel på to ord, der ikke lyder ens:
SELECT 'Cat' SOUNDS LIKE 'Dog'; Resultat:
+-------------------------+ | 'Cat' SOUNDS LIKE 'Dog' | +-------------------------+ | 0 | +-------------------------+
I dette tilfælde fik vi 0 , fordi ordene ikke lyder ens. Formentlig er deres Soundex-strenge anderledes. Lad os finde ud af:
SELECT
SOUNDEX('Cat'),
SOUNDEX('Dog'); Resultat:
+----------------+----------------+
| SOUNDEX('Cat') | SOUNDEX('Dog') |
+----------------+----------------+
| C300 | D200 |
+----------------+----------------+ Jep. Forskellige Soundex-strenge.
Databaseeksempel
Her er et eksempel på brug af SOUNDS LIKE i WHERE klausul i en databaseforespørgsel:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg'; Resultat:
+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag | W200 | W200 |
+---------+------------------+-----------------+
Her bruger den SOUNDEX() funktion til at gøre det samme:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg'); Resultat:
+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag | W200 | W200 |
+---------+------------------+-----------------+