Совпадение каждого слова, разделенного пробелом, и целого слова. - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь найти строку со всей комбинацией, включенной в строку поиска, вместе со всей строкой. То есть, 1) Search = 'abc def', тогда все строки с abc, def и 'abc def' 2) Seach = 'abc def xyz', затем все строки с abc, def, xyz и 'abc def xyz'

Я написал ниже запрос, чтобы сделать то же самое

DECLARE @search_string VARCHAR(1000) = 'abc def'
DECLARE @Query VARCHAR(1000)


SET @Query = 'SELECT [Question], 

( (case when Question like ''%'+LEFT(@search_string, charindex(' ', @search_string) - 1)+'%'' then 1 else 0 end) +
         (case when Question like ''%'+SUBSTRING(@search_string, CHARINDEX(' ', @search_string) +1, DATALENGTH(@search_string) - CHARINDEX(' ', @search_string) +1 )+'%'' then 1 else 0 end) +
         (case when Question like ''%'+@search_string+'%'' then 1 else 0 end)

       ) as CountString

FROM Tbl_Questions WHERE ([Question] LIKE ''%' + REPLACE(@search_string, ' ', '%'' OR [Question] LIKE ''%') + '%'') order by CountString desc'
EXEC(@Query)

Это дает мне результаты для слов с одним пробелом. Я не могу получить результаты для слов с несколькими пробелами. Кроме того, мне нужно заказать по всему слову. То есть, если 4 строка соответствует всем трем словам (abc def xyz), она должна быть сверху. если некоторые из них соответствуют abc def, то это должно быть следующим.

Как изменить этот код, включив в него несколько пробелов и выполнить поиск в соответствии с указанным выше?

...