将用空格分隔的每个单词与整个单词SQL Like子句匹配

时间:2019-04-10 08:21:13

标签: sql-server search sql-like

我正在尝试搜索包含搜索字符串中所有组合的字符串以及它自己的整个字符串。那是, 1)搜索='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,那么应该是下一个。

如何修改此代码以包含多个空格并按上述进行搜索?

0 个答案:

没有答案