Мне нужно реализовать простой поиск в таблице небольшого содержимого: id, name, description, content. Результаты должны быть порядок по приоритетамПоисковый запрос, 'order by' priority
- имя
- описание
- содержание
это означает, что, если искомое слово было найдено в поле описания, будет показано только после того, как все строки, которые имеют собака в поле для заполнения
Что я сделал:
Я попытался создать временную таблицу со структурой, подобной таблице, которую я использую, но с другим приоритетом поля. для каждого поля, это я использую для поиска, сделать вставки выбрать для временной таблицы
Пример:
DECLARE @query NVARCHAR(255)
CREATE TABLE #tbl_search
(
[id] INT NOT NULL ,
[name] NVARCHAR(255) ,
[description] NVARCHAR(MAX) ,
[content] NVARCHAR(MAX) ,
[priority] INT
)
--searching in name field
INSERT INTO #tbl_search
([ID] ,
[name] ,
[description] ,
[content] ,
[priority]
)
SELECT [ID] ,
[name] ,
[description] ,
[content] ,
1
FROM [tbl_content]
WHERE name LIKE '%' + @query + '%'
--searching in description field
INSERT INTO #tbl_search
([ID] ,
[name] ,
[description] ,
[content] ,
[priority]
)
SELECT [ID] ,
[name] ,
[description] ,
[content] ,
2
FROM [tbl_content]
WHERE description LIKE '%' + @query + '%'
AND id NOT IN (SELECT id
FROM #tbl_search)
--.....
SELECT *
FROM #tbl_search
ORDER BY [priority]
DROP TABLE #tbl_search
Каков фактический вопрос? –
Итак, есть ли где-то вопрос? – Guffa
Я думаю, он спрашивает, как бы это сделать .. – Amirshk