Я создаю окно поиска для поиска имени пользователя в моей базе данных. База данных имеет имя и фамилию. Я хочу найти эти поля, чтобы найти пользователей, которые соответствуют запросу. Поэтому я придумал следующее:Использование LIKE в SQL-запросе
SELECT *
FROM user
WHERE (firstname + ' ' + lastname) LIKE ('%' + @query + '%')
Это работает, но я не уверен, что это лучший способ сделать это. Тем более, что база данных становится больше. Есть ли лучшее решение или это будет достаточно?
Вы уверены, что вам нужно 'LIKE'? Кажется, что это будет делать то, что вам нужно ... 'SELECT * FROM user WHERE (firstname + '' + lastname) = @ query' ... Я полагаю, это зависит от того, будет ли ваш @query скорее всего точным – neokio
Возможно, нормально с 'LIKE'] (http://sqlserverperformance.idera.com/tsql-optimization/replace-poorly-performing-substring-function-sql-server-statement/), но если вы беспокоитесь, вы можете использовать SQL Management Studio и проверьте план выполнения для подтверждения производительности. –
Возможно, вам понадобится 'where firstname like '%' + @query + '%' или lastname, например '%' + @query + '%''. Таким образом, совпадение на части либо первого, либо последнего имени будет включено в результирующий набор. – HABO