Soundex je fonetický algoritmus pro indexování jmen podle zvuku, jak se vyslovuje v angličtině. Byl vyvinut a patentován v letech 1918 a 1922.
Jednou z funkcí dostupných na serveru SQL je SOUNDEX()
funkce, která vrací kód Soundex pro daný řetězec.
Syntaxe
Syntaxe vypadá takto:
SOUNDEX ( character_expression )
Kde character_expression
je slovo nebo řetězec, pro který chcete mít kód Soundex. Může to být konstanta, proměnná nebo sloupec.
SOUNDEX()
Funkce je citlivá na řazení a řetězcové funkce mohou být vnořeny.
Kód Soundex
Jak již bylo zmíněno, SOUNDEX()
Funkce vrací Soundex kód pro daný řetězec. Kód Soundex je čtyřmístný kód, který je založen na tom, jak řetězec zní při vyslovení. Zde je příklad kódu Soundex:
S600
Zde je návod, jak je vytvořen kód Soundex:
- První znak kódu je první znak řetězce převedený na velká písmena. Ve výše uvedeném příkladu tedy víme, že řetězec začíná písmenem S (buď malým nebo velkým).
- Druhý až čtvrtý znak kódu jsou čísla, která představují písmena ve výrazu.
- Písmena A, E, I, O, U, H, W a Y jsou ignorována, pokud nejsou prvním písmenem řetězce.
- Nuly jsou přidány na konec, pokud je to nutné pro vytvoření čtyřznakového kódu.
Příklad
Zde je příklad načtení řetězce Soundex z řetězce:
SELECT SOUNDEX('Sure');
Výsledek:
S600
Vidíme tedy, že slovo Sure
má Soundex kód S600
.
Příklad dvou shodných slov
Zde je příklad, kdy dvě slova sdílejí stejný kód Soundex (protože znějí stejně):
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
Výsledek:
Sure Shore ---- ----- S600 S600
Zde jsou některé další příklady přesné shody:
SELECT SOUNDEX('Dam') AS Dam, SOUNDEX('Damn') AS Damn, SOUNDEX('Too') AS Too, SOUNDEX('Two') AS Two;
Výsledek:
Dam Damn Too Two ---- ---- ---- ---- D500 D500 T000 T000
Příklad slov, která se neshodují
Zde je příklad, kdy dvě slova neznějí stejně, a proto mají různé kódy Soundex:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Výsledek:
Water Coffee ----- ------ W360 C100
Slova s různým pravopisem
Některá slova mají jiný pravopis v závislosti na zemi, ze které pocházíte. Taková slova budou sdílet stejný kód Soundex:
SELECT SOUNDEX('Flavor') AS 'Flavor', SOUNDEX('Flavour') AS 'Flavour';
Výsledek:
Flavor Flavour ------ ------- F416 F416
Stejný zvuk, jiný kód Soundex
Někdy znějí dvě slova stejně, ale mají různé kódy Soundex. Nejčastějším důvodem je to, že začínají jiným písmenem (jeden používá tiché písmeno). Jak již bylo zmíněno, kód Soundex začíná prvním písmenem řetězce (převedeno na velká písmena). Pokud tedy máte dvě slova, která se vyslovují úplně stejně, ale začínají jiným písmenem, budou mít jiný kód Soundex.
Zde je několik příkladů:
SELECT SOUNDEX('Hole') AS 'Hole', SOUNDEX('Whole') AS 'Whole', SOUNDEX('Our') AS Our, SOUNDEX('Hour') AS Hour;
Výsledek:
Hole Whole Our Hour ---- ----- ---- ---- H400 W400 O600 H600
Páry v tomto příkladu mají různé kódy Soundex pouze proto, že jejich první písmeno je odlišné.