让我们认为我们有一个有意义的词表(例如字典),并且有一个“字母集”作为输入,并且我们希望找到在源表中找到的所有由给定一组字母,考虑到结果中不需要使用所有给定字母,但是结果中的所有字母都必须属于给定字母组。
Dictionary
----------
in
ink
inn
inbox
Input: unmin
Result
------
in
inn
答案 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 <>小提琴。