通过SQL中给定的字母集在字典db中查找单词

时间:2018-10-08 00:59:47

标签: sql sql-server

让我们认为我们有一个有意义的词表(例如字典),并且有一个“字母集”作为输入,并且我们希望找到在源表中找到的所有由给定一组字母,考虑到结果中不需要使用所有给定字母,但是结果中的所有字母都必须属于给定字母组。

Dictionary
----------
in
ink
inn
inbox

Input: unmin

Result
------
in
inn

1 个答案:

答案 0 :(得分:0)

您可以使用递归CTE将字符串分成字母,然后确保字典中只有那些字母:

with cte as (
      select left(@input, 1) as letter, stuff(@input, 1, 1, '') as rest
      union all
      select left(rest, 1), stuff(rest, 1, 1, '')
      from cte
      where rest <> ''
     )
select d.word
from dictionary d join
     cte
     on d.word like '%' + cte.letter + '%'
group by d.word
having count(*) = len(d.word)

Here是db <>小提琴。