Soundex е фонетичен алгоритъм за индексиране на имена по звук, както се произнася на английски. Той е разработен и патентован през 1918 и 1922 г.
Една от функциите, налични в SQL Server, е SOUNDEX()
функция, която връща кода на Soundex за даден низ.
Синтаксис
Синтаксисът е така:
SOUNDEX ( character_expression )
Където character_expression
е думата или низът, за който искате Soundex кода. Това може да бъде константа, променлива или колона.
SOUNDEX()
функцията е чувствителна към съпоставяне и функциите на низове могат да бъдат вложени.
Кодът на Soundex
Както споменахме, SOUNDEX()
функцията връща Soundex кода за дадения низ. Кодът на Soundex е код от четири знака, който се основава на това как низът звучи, когато се говори. Ето пример за Soundex код:
S600
Ето как се изгражда Soundex код:
- Първият знак на кода е първият знак от низа, преобразуван в главни букви. Така че в горния пример знаем, че низът започва с буквата S (малка или главна).
- От втория до четвъртия знак в кода са числа, които представляват буквите в израза.
- Буквите A, E, I, O, U, H, W и Y се игнорират, освен ако не са първата буква от низа.
- В края се добавят нули, ако е необходимо, за да се създаде код от четири знака.
Пример
Ето пример за извличане на Soundex низ от низ:
SELECT SOUNDEX('Sure');
Резултат:
S600
Така че можем да видим, че думата Sure
има Soundex код S600
.
Пример за две съвпадащи думи
Ето пример за това, когато две думи споделят един и същ код на Soundex (защото звучат еднакво):
SELECT SOUNDEX('Sure') AS Sure, SOUNDEX('Shore') AS Shore;
Резултат:
Sure Shore ---- ----- S600 S600
Ето още няколко примера за точно съвпадение:
SELECT SOUNDEX('Dam') AS Dam, SOUNDEX('Damn') AS Damn, SOUNDEX('Too') AS Too, SOUNDEX('Two') AS Two;
Резултат:
Dam Damn Too Two ---- ---- ---- ---- D500 D500 T000 T000
Пример за думи, които не съвпадат
Ето пример за това, когато две думи не звучат еднакво и следователно имат различни Soundex кодове:
SELECT SOUNDEX('Water') AS Water, SOUNDEX('Coffee') AS Coffee;
Резултат:
Water Coffee ----- ------ W360 C100
Думи с различен правопис
Някои думи имат различен правопис в зависимост от това от коя държава сте. Такива думи ще споделят един и същ Soundex код:
SELECT SOUNDEX('Flavor') AS 'Flavor', SOUNDEX('Flavour') AS 'Flavour';
Резултат:
Flavor Flavour ------ ------- F416 F416
Същият звук, различен Soundex код
Понякога две думи звучат еднакво, но имат различни Soundex кодове. Най-честата причина за това е, че те започват с различна буква (човек използва тиха буква). Както споменахме, кодът на Soundex започва с първата буква на низа (преобразувана в главни букви). Следователно, ако имате две думи, които се произнасят абсолютно еднакво, но започват с различна буква, те ще имат различен Soundex код.
Ето няколко примера:
SELECT SOUNDEX('Hole') AS 'Hole', SOUNDEX('Whole') AS 'Whole', SOUNDEX('Our') AS Our, SOUNDEX('Hour') AS Hour;
Резултат:
Hole Whole Our Hour ---- ----- ---- ---- H400 W400 O600 H600
Двойките в този пример имат различни Soundex кодове само защото първата им буква е различна.