W MariaDB możesz użyć SOUNDS LIKE
w zapytaniu, aby dopasować słowa, które brzmią podobnie.
Składnia
Składnia wygląda tak:
expr1 SOUNDS LIKE expr2
To to samo, co zrobienie tego:SOUNDEX(expr1) = SOUNDEX(expr2)
.
Soundex to fonetyczny algorytm indeksowania nazw według dźwięku, wymawianego w języku angielskim. Jeśli dwa słowa brzmią tak samo, powinny mieć ten sam ciąg Soundex. Jeśli dwa słowa brzmią podobnie, ale nie dokładnie tak samo, ich ciąg Soundex może wyglądać podobnie, ale nie dokładnie tak samo.
Przykład
Oto podstawowy przykład:
SELECT 'Two' SOUNDS LIKE 'Too';
Wynik:
+-------------------------+ | 'Two' SOUNDS LIKE 'Too' | +-------------------------+ | 1 | +-------------------------+
W tym przypadku te dwa słowa brzmią tak samo.
Możemy użyć SOUNDEX()
funkcja zwracająca ciąg Soundex każdego słowa:
SELECT
SOUNDEX('Two'),
SOUNDEX('Too');
Wynik:
+----------------+----------------+ | SOUNDEX('Two') | SOUNDEX('Too') | +----------------+----------------+ | T000 | T000 | +----------------+----------------+
Struny Soundex są identyczne. Dlatego SOUNDS LIKE
zwrócono 1
.
Brak dopasowania
Oto przykład dwóch słów, które nie brzmią tak samo:
SELECT 'Cat' SOUNDS LIKE 'Dog';
Wynik:
+-------------------------+ | 'Cat' SOUNDS LIKE 'Dog' | +-------------------------+ | 0 | +-------------------------+
W tym przypadku otrzymaliśmy 0
, ponieważ słowa nie brzmią tak samo. Przypuszczalnie ich struny Soundex są inne. Dowiedzmy się:
SELECT
SOUNDEX('Cat'),
SOUNDEX('Dog');
Wynik:
+----------------+----------------+ | SOUNDEX('Cat') | SOUNDEX('Dog') | +----------------+----------------+ | C300 | D200 | +----------------+----------------+
Tak. Różne struny Soundex.
Przykład bazy danych
Oto przykład użycia SOUNDS LIKE
w WHERE
klauzula zapytania do bazy danych:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE PetName SOUNDS LIKE 'Wagg';
Wynik:
+---------+------------------+-----------------+ | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') | +---------+------------------+-----------------+ | Wag | W200 | W200 | +---------+------------------+-----------------+
Tutaj używa SOUNDEX()
funkcja, aby zrobić to samo:
SELECT
PetName,
SOUNDEX(PetName),
SOUNDEX('Wagg')
FROM Pets
WHERE SOUNDEX(PetName) = SOUNDEX('Wagg');
Wynik:
+---------+------------------+-----------------+ | PetName | SOUNDEX(PetName) | SOUNDEX('Wagg') | +---------+------------------+-----------------+ | Wag | W200 | W200 | +---------+------------------+-----------------+