Ближайшее совпадение SQL на основе предварительно определенного списка - PullRequest
1 голос
/ 01 ноября 2011

У меня есть таблица клиентов с тысячами записей.Как часть веб-приложения, я хотел бы иметь возможность дать пользователю текстовое поле для ввода имени клиента, а затем приложение для отображения некоторых деталей.

Очевидно, что это зависит от двух вещей: 1) Имя клиента введено правильно в записи базы данных и 2) Пользователь правильно вводит имя клиента в поле поиска.

Я хотел бы, чтобы пользователь ввел некоторый текст, после чего система вернуланеобходимые данные, если есть совпадение или (что более важно), показать список ближайших совпадений (то есть из списка клиентов) для выбора пользователем, если нет точного совпадения.

Итак,Используя MS SQL 2005, есть ли простой способ сделать последнее?

Shaun.

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Существует соответствующий алгоритм Soundex , вы можете легко применить его, чтобы получить соответствующие строки, см. this :

SELECT
  FirstName,
  SOUNDEX(FirstName) AS SoundTest,
  DIFFERENCE(FirstName, 'textentered') As DiffTest
FROM
  customerTable

это применимо только в том случае, если в столбце есть одно слово, и существует другой алгоритм сопоставления, который называется Расстояние Левенштейна Я думаю, вам стоит взглянуть на

0 голосов
/ 01 ноября 2011

Самый простой способ может быть

first look for the exact match
if found display
else query database again using LIKE operator 
(select name
 from table
 where name like '%nameEnteredByUser%')
display user, all the possible combinations

хотя может быть больше подходов софостиков в зависимости от ваших требований

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