T-SQL Поиск по «комбинированному» имени столбца - PullRequest
1 голос
/ 23 мая 2011

Я хотел бы знать, можно ли искать по двум объединенным столбцамНапример, в моем приложении у меня есть поле ввода для «Полного имени», но в базе данных SQL у меня есть столбцы Имя, Фамилия.

Можно ли построить запрос для выполнения поиска, например Имя + Фамилия =%ФИО% ?

Ответы [ 4 ]

1 голос
/ 23 мая 2011

Вы можете сделать это:

select  *
from Production.Product
where (Name + ' ' + ProductNumber) like 'Bearing Ball BA-8327'

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

1 голос
/ 23 мая 2011

Да, вы можете сделать это, но это будет довольно медленно.Так как имя и фамилия могут быть проиндексированы.

0 голосов
/ 23 мая 2011

Расширяя предложения из предыдущих ответов, попробуйте это.

SELECT * FROM People
WHERE firstname = substring(@fullname, 1, charindex(' ', @fullname) - 1)
AND surname = substring(@fullname, charindex(' ', @fullname) + 1, len(@fullname))

Надеюсь, это поможет.

0 голосов
/ 23 мая 2011

Если пространство на диске не имеет значения, вы можете добавить «постоянный» вычисляемый столбец с полным именем, чтобы вы могли поддерживать специфику двух конкретных столбцов, одновременно обеспечивая возможность индексации столбца с полным именем, который автоматически обновляется при первом или фамилия меняется.

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

http://msdn.microsoft.com/en-us/library/ms189292.aspx

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