I MariaDB kan du använda SOUNDS LIKE i en fråga för att matcha ord som låter likadana.
Syntax
Syntaxen ser ut så här:
expr1 SOUNDS LIKE expr2
Det är samma sak som att göra så här:SOUNDEX(expr1) = SOUNDEX(expr2) .
Soundex är en fonetisk algoritm för att indexera namn efter ljud, som uttalas på engelska. Om två ord låter likadana bör de ha samma Soundex-sträng. Om två ord låter lika, men inte exakt likadana, kan deras Soundex-sträng se likadana ut men inte exakt likadana.
Exempel
Här är ett grundläggande exempel:
SELECT 'Two' SOUNDS LIKE 'Too'; Resultat:
+-------------------------+ | 'Two' SOUNDS LIKE 'Too' | +-------------------------+ | 1 | +-------------------------+
I det här fallet låter de två orden likadana.
Vi kan använda SOUNDEX() funktion för att returnera Soundex-strängen för varje ord:
SELECT
SOUNDEX('Two'),
SOUNDEX('Too'); Resultat:
+----------------+----------------+
| SOUNDEX('Two') | SOUNDEX('Too') |
+----------------+----------------+
| T000 | T000 |
+----------------+----------------+
Soundex-strängarna är identiska. Det är därför SOUNDS LIKE returnerade 1 .
Ingen match
Här är ett exempel på två ord som inte låter likadant:
SELECT 'Cat' SOUNDS LIKE 'Dog'; Resultat:
+-------------------------+ | 'Cat' SOUNDS LIKE 'Dog' | +-------------------------+ | 0 | +-------------------------+
I det här fallet fick vi 0 , eftersom orden inte låter likadana. Förmodligen är deras Soundex-strängar annorlunda. Låt oss ta reda på:
SELECT
SOUNDEX('Cat'),
SOUNDEX('Dog'); Resultat:
+----------------+----------------+
| SOUNDEX('Cat') | SOUNDEX('Dog') |
+----------------+----------------+
| C300 | D200 |
+----------------+----------------+ Japp. Olika Soundex-strängar.
Databasexempel
Här är ett exempel på hur du använder SOUNDS LIKE i WHERE klausul i en databasfråga:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg'; Resultat:
+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag | W200 | W200 |
+---------+------------------+-----------------+
Här använder den SOUNDEX() funktion för att göra samma sak:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg'); Resultat:
+---------+------------------+-----------------+
| PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') |
+---------+------------------+-----------------+
| Wag | W200 | W200 |
+---------+------------------+-----------------+