Jedną z wielu funkcji napisowych MySQL jest SOUNDEX()
funkcjonować. Ta funkcja zwraca ciąg Soundex z podanego ciągu. 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.
Ten artykuł zawiera kilka przykładów Soundex, aby zademonstrować, jak SOUNDEX()
funkcja działa w MySQL.
Składnia
Najpierw spójrzmy na składnię:
SOUNDEX(str)
Gdzie str
jest ciągiem, do którego potrzebujesz ciągu Soundex.
Przykład
Oto przykład pobierania ciągu Soundex z ciągu:
SELECT SOUNDEX('Sure');
Wynik:
+-----------------+ | SOUNDEX('Sure') | +-----------------+ | S600 | +-----------------+
W tym przypadku słowo Sure
ma ciąg Soundex S600
.
Przykład — dopasowanie ścisłe
Oto przykład, w którym dwa słowa brzmią tak samo (lub bardzo podobnie), a zatem mają ten sam ciąg Soundex:
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
Wynik:
+------+-------+ | Sure | Shore | +------+-------+ | S600 | S600 | +------+-------+
Oto kilka przykładów dopasowania ścisłego:
SELECT SOUNDEX('Dam') AS Dam, SOUNDEX('Damn') AS Damn, SOUNDEX('Too') AS Too, SOUNDEX('Two') AS Two;
Wynik:
+------+------+------+------+ | Dam | Damn | Too | Two | +------+------+------+------+ | D500 | D500 | T000 | T000 | +------+------+------+------+
Przykład — niedopasowanie
Oto przykład, w którym dwa słowa nie brzmią tak samo, a zatem mają różne ciągi Soundex:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Wynik:
+-------+--------+ | Water | Coffee | +-------+--------+ | W360 | C100 | +-------+--------+
Jak widać, ciąg Soundex jest zupełnie inny dla tych dwóch słów.
Przykład – różne pisownie
Oto przykład dwóch słów, które mają różną pisownię (w zależności od kraju, z którego pochodzisz):
SELECT SOUNDEX('Color') AS 'Color', SOUNDEX('Colour') AS 'Colour';
Wynik:
+-------+--------+ | Color | Colour | +-------+--------+ | C460 | C460 | +-------+--------+
Widzimy więc, że takie słowa będą miały ten sam ciąg Soundex (o ile są wymawiane w ten sam sposób).
Przykład – ten sam dźwięk, inny dźwięk
Zdarzają się przypadki, w których słowa brzmią tak samo, ale mają różne struny Soundex. Najczęstszym powodem jest to, że zaczynają się od innej litery, z których jedna jest cicha. Być może zauważyłeś z poprzednich przykładów, że ciąg Soundex zaczyna się od pierwszej litery ciągu.
Dlatego jeśli masz dwa słowa, które są wymawiane dokładnie tak samo, ale zaczynają się od innej litery, będą miały inny ciąg Soundex.
Oto kilka przykładów:
SELECT SOUNDEX('Hole') AS 'Hole', SOUNDEX('Whole') AS 'Whole', SOUNDEX('Our') AS Our, SOUNDEX('Hour') AS Hour;
Wynik:
+------+-------+------+------+ | Hole | Whole | Our | Hour | +------+-------+------+------+ | H400 | W400 | O600 | H600 | +------+-------+------+------+
Pary w tym przykładzie mają różne ciągi Soundex tylko dlatego, że ich pierwsza litera jest inna.
Przykład – Soundex w zapytaniu do bazy danych
Oto przykład użycia SOUNDEX()
w zapytaniu do bazy danych. W tym przypadku szukamy płyt, które brzmią jak „Ay See Dee Ci”:
SELECT ArtistName FROM Artists WHERE SOUNDEX(ArtistName) = SOUNDEX('Ay See Dee Ci');
Wynik:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+
Więc AC/DC
najwyraźniej ma ten sam kod Soundex co Ay See Dee Ci
(przynajmniej w przypadku korzystania z MySQL) Dla pewności, oto kody Soundex dla obu tych ciągów:
SELECT SOUNDEX('AC/DC') AS 'AC/DC', SOUNDEX('Ay See Dee Ci') AS 'Ay See Dee Ci';
Wynik:
+-------+---------------+ | AC/DC | Ay See Dee Ci | +-------+---------------+ | A232 | A232 | +-------+---------------+
Alternatywa:BRZMI JAK
Alternatywne zapytanie mogło zostać utworzone za pomocą SOUNDS LIKE
zamiast SOUNDEX()
funkcjonować. Tak:
SELECT ArtistName FROM Artists WHERE ArtistName SOUNDS LIKE 'Ay See Dee Ci';
Wynik:
+------------+ | ArtistName | +------------+ | AC/DC | +------------+