Я пытаюсь написать SQL-запрос для фильтрации записей из таблицы продуктов для поиска в зависимости от текста поиска. Текст будет содержать несколько слов, разделенных пробелом (например, Samsung s6)Отфильтровать результаты запроса SQL для поиска
Проблема заключается в том, что результаты должны содержать все слова в результате.
Теперь записи могут иметь имена, как
- Samsung s6
- Samsung Galaxy s6
- Samsung A5
- Samsung GALAXY s6 край
- Apple Iphone 6
прямо сейчас для текста поиска «samsung s6» должен получить записи 1,2,4 в результате но способ, которым я пытался, дает мне 1,2,3,4 строки в результате.
мой запрос:
CREATE TABLE #TempSearch
(
ID INT IDENTITY(1,1),
Value VARCHAR(200)
)
INSERT INTO dbo.#TempSearch
SELECT * FROM CSVToTable(ISNULL(@ModelName,''),' ')
SELECT
T1.*
FROM
<table1> T1 INNER JOIN #TempSearch T2 ON T1.Name LIKE CONCAT('%', T2.Value, '%')
Я взял строку поиска в временной таблице, которая содержит строку для каждого слова (разделенных пробелами)
затем внутренней соединенную с основной таблицей.
Пожалуйста, укажите желаемый результат. –
@ PM77-1 Я упомянул о желаемом результате в вопросе «для текста поиска» samsung s6 'i должен получить записи 1,2,4 в результате, но способ, которым я пытался, давал мне 1,2,3,4 строки в результат из записей в вопросе ». –