Я довольно бесполезен в SQL, но мне приходится писать хранимую процедуру для очень простого поиска по ключевой фразе.
Я пытаюсь сделать простой выбор по имени - используя как% ключевое слово% - затем еще один выбор по описанию - то же самое ключевое слово - и объединение (объединение) 2 выбора.
Однако я получаю сообщение об ошибке:
The ntext data type cannot be selected as DISTINCT because it is not comparable.
Я пытался использовать UNION ALL
, но в некоторых случаях он возвращал повторяющиеся строки (в зависимости от ключевого слова / фразы).
Я также пытался использовать временные таблицы и выбирать разные, но вот тут я действительно запутался.
Правила:
- Я не могу изменить тип данных
- Мне нужно, чтобы строки из выбора в «Имя» были выше строк из выбора в «Описание»
- Я могу использовать только 1 хранимую процедуру и не могу изменить адаптер данных, так как подключаю его к системе, которую я не могу контролировать.
Дополнительная информация:
Столбцы таблицы (важными 2, с которыми я работаю, являются Имя и Описание):
ProductId int
Name varchar(255)
Introduction varchar(255)
Description ntext
Material ntext
Colour varchar(255)
Active bit
Dimensions varchar(255)
Photo varchar(255)
Price decimal(10, 2)
DisplayOrder int
ProductReference varchar(255)
CategoryId int
FriendlyURL varchar(1000)
SQL:
(SELECT Products.ProductId, Name, Introduction, Description, Active,
Material, Colour, Dimensions, Photo, Price, DisplayOrder, FriendlyURL,
ProductReference, Categories_Products_Lookup.CategoryId
FROM Products INNER JOIN
Categories_Products_Lookup ON
Products.ProductId = Categories_Products_Lookup.ProductId
WHERE Active = 1 AND tProduct.Name like '%'+@Keyword+'%')
UNION
(SELECT Products.ProductId, Name, Introduction, Description, Active,
Material, Colour, Dimensions, Photo, Price, DisplayOrder, FriendlyURL,
ProductReference, Categories_Products_Lookup.CategoryId
FROM ProductsINNER JOIN
Categories_Products_Lookup ON
Products.ProductId = Categories_Products_Lookup.ProductId
WHERE Active = 1 AND Products.Description like '%'+@Keyword+'%')
Любая помощь в получении таблицы с отдельными строками будет очень признательна. Кроме того, было бы здорово объяснить мне, как дилетанту. :)