是否可以通过单个查询在 SQL Server 中获得低于结果的结果?
示例数据[ description_column ]:
要搜索的字符串: LG 55真空影院之家
更新: 我想根据搜索字词中的字数来排序结果,因此所需结果如下:
预先感谢
答案 0 :(得分:0)
A)使用String_Split或类似方法为每个单词创建一个表。 LG 55真空剧院之家
#table_of_words (text varchar(32))
text
LG
55
Vacuum
Theater
Home
B)将创建的表与 主表使用类似
的表达式SELECT DISTINCT Description
FROM main_table Main
JOIN #table_of_words WD ON Main.Description Like '%'+WD.text+'%'
如果只想包含整个单词,则需要在ON子句中添加空格:(感谢ZLK)
SELECT DISTINCT Description
FROM main_table Main
JOIN #table_of_words WD ON ' '+Main.Description+' '
LIKE '% '+WD.text+' %'
还要注意,如果要处理逗号,则需要进行一些其他调整。
SELECT DISTINCT Description
FROM main_table Main
JOIN #table_of_words WD ON ' '+Main.Description+' '
LIKE '%[, ]'+WD.text+'[, ]%'
这里是如何根据找到的单词数对结果进行排序
SELECT description,count(*) as NumberWords
FROM main_table Main
JOIN #table_of_words WD ON ' '+Main.description+' '
LIKE '% '+WD.text+' %'
GROUP BY description
ORDER BY NumberWords DESC