почему soundex возвращает несущественный результат - PullRequest
0 голосов
/ 04 июля 2018

Интересно, почему:

  WHERE 1=1 
    AND   LTRIM(RTRIM(lastName)) ='Schmdli' 
        OR ( 
                SOUNDEX(lastName) = SOUNDEX('Schmdli')
            )

Верните мне результат, как

lastName
Schöntal
Schindler-Külling
Schindler
Schmidlin
Schindler
Schmidli
Schmidli
Schindler

пока ожидаю только:

Schmidli
Schmidli
Schmidlin

Мой первый AND LTRIM(RTRIM(lastName)) ='Schmdli' должен соответствовать точному значению, а затем с soundex. Я ожидаю, что лучше около Шмдли, результат здесь такой, как

Schöntal
Schindler-Külling
Schindler

не должно появляться.

Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Тривиальный ответ: потому что SOUNDEX - это простой алгоритм с ограниченным пространством (одна буква и три цифры), и все ваши примеры переводятся на один и тот же, S534, только принимая При этом учитываются буквы S, C, M и D. Между прочим, Schöntal учитывает только S, C, N и T, создавая один и тот же вывод, поскольку M и N кодируют таким же образом, как и D и T.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...