根据字数查找字符串

时间:2019-02-24 20:43:46

标签: sql sql-server

是否可以通过单个查询 SQL Server 中获得低于结果的结果?

示例数据[ description_column ]:

  • LG电视
  • BOSCH 55毫米吸尘器
  • SONY 55瓦家庭影院

要搜索的字符串: LG 55真空影院之家

更新: 我想根据搜索字词中的字数来排序结果,因此所需结果如下:

  1. SONY家庭影院55瓦(包含三个词: 55 剧院家庭
  2. BOSCH真空吸尘器55毫米(包含两个词: 55 真空
  3. LG电视(包含一个词: LG

预先感谢

1 个答案:

答案 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