Soundex to algorytm fonetyczny służący do indeksowania nazw według dźwięku wymawianego w języku angielskim. Został opracowany i opatentowany w 1918 i 1922 roku.
Jedną z funkcji dostępnych w SQL Server jest SOUNDEX()
funkcja, która zwraca kod Soundex dla podanego ciągu.
Składnia
Składnia wygląda tak:
SOUNDEX ( character_expression )
Gdzie character_expression
jest słowem lub ciągiem, dla którego chcesz otrzymać kod Soundex. Może to być stała, zmienna lub kolumna.
SOUNDEX()
funkcja jest wrażliwa na sortowanie, a funkcje łańcuchowe mogą być zagnieżdżane.
Kod Soundex
Jak wspomniano, SOUNDEX()
funkcja zwraca kod Soundex dla podanego ciągu. Kod Soundex to czteroznakowy kod, który opiera się na brzmieniu ciągu znaków podczas wypowiadania. Oto przykład kodu Soundex:
S600
Oto jak skonstruowany jest kod Soundex:
- Pierwszy znak kodu to pierwszy znak ciągu zamieniony na wielkie litery. Tak więc w powyższym przykładzie wiemy, że ciąg zaczyna się na literę S (albo małą albo wielką).
- Drugi do czwartego znak kodu to cyfry reprezentujące litery w wyrażeniu.
- Litery A, E, I, O, U, H, W i Y są ignorowane, chyba że są pierwszą literą ciągu.
- Zera są dodawane na końcu, jeśli to konieczne, aby utworzyć czteroznakowy kod.
Przykład
Oto przykład pobierania ciągu Soundex z ciągu:
SELECT SOUNDEX('Sure');
Wynik:
S600
Widzimy więc, że słowo Sure
ma kod Soundex S600
.
Przykład dwóch pasujących słów
Oto przykład, w którym dwa słowa mają ten sam kod Soundex (ponieważ brzmią tak samo):
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 słów, które nie pasują
Oto przykład, w którym dwa słowa nie brzmią tak samo i dlatego mają różne kody Soundex:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Wynik:
Water Coffee ----- ------ W360 C100
Słowa z różną pisownią
Niektóre słowa mają różną pisownię w zależności od kraju, z którego pochodzisz. Takie słowa będą miały ten sam kod Soundex:
SELECT SOUNDEX('Flavor') AS 'Flavor', SOUNDEX('Flavour') AS 'Flavour';
Wynik:
Flavor Flavour ------ ------- F416 F416
Ten sam dźwięk, inny kod Soundex
Czasami dwa słowa brzmią tak samo, ale mają różne kody Soundex. Najczęstszym powodem jest to, że zaczynają się od innej litery (jeden używa cichej litery). Jak wspomniano, kod Soundex zaczyna się od pierwszej litery ciągu (przekonwertowanej na wielkie litery). 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 kod 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 kody Soundex tylko dlatego, że ich pierwsza litera jest inna.