Использование LIKE в запросе SQL - PullRequest
2 голосов
/ 01 марта 2012

Я создаю окно поиска для поиска имен пользователей в моей базе данных.База данных имеет поле имени и фамилии.Я хочу выполнить поиск в этих полях, чтобы найти пользователей, которые соответствуют запросу.Итак, я придумал это:

SELECT *
FROM user
WHERE (firstname + ' ' + lastname) LIKE ('%' + @query + '%')

Это работает, но я не уверен, что это лучший способ сделать это.Тем более, что база данных становится больше.Есть ли лучшее решение или этого будет достаточно?

Ответы [ 3 ]

4 голосов
/ 01 марта 2012

Взгляните на возможности полнотекстового индексирования SQL-сервера: http://msdn.microsoft.com/en-us/library/ms142571.aspx

Это может быть немного рефакторинг, но поиск по индексу гораздо эффективнее, чем строка за строкой.

Если вы перерастете это, вы всегда можете рассмотреть что-то вроде Lucene.Net.Он обладает гораздо большей гибкостью с точки зрения операторов запросов.Это совершенно отдельный механизм индексации и запросов, поэтому он, вероятно, потребует значительного количества рефакторинга.Просто кое-что рассмотреть.

0 голосов
/ 01 марта 2012

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

(First_Name LIKE '%' + @SearchText + '%') OR (Last_Name LIKE '%' + @SearchText + '%') OR (First_Name + ' ' + Last_Name LIKE '%' + @SearchText + '%')
0 голосов
/ 01 марта 2012

добавить вычисленные столбцы в дБ: http://msdn.microsoft.com/en-us/library/ms191250.aspx а затем запрос к этому столбцу

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