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 кодове само защото първата им буква е различна.