首页 > 解决方案 > 查找没有特定字符的记录

问题描述

我有一个表,它有一列Name。用户可以指定一些字符,以便名称列不应包含所有这些字符。我如何为未知数量的字符动态地执行此操作?

谢谢

标签: sqlsql-serversql-server-2016

解决方案


尝试这个:

Select name from tbl
except
select name from tbl
join
(select substring(a.b, v.number + 1, 1) letter
from (select 'WCRTV' b) a
join master..spt_values v on v.number < len(a.b)
where v.type = 'P') chars
on name like '%' + chars.letter + '%'

首先,您将 astring作为输入,这里输入是一个静态值'WCRTV',然后使用以下代码,您可以将其string转换为列表chars(这部分的功劳转到此链接):

select substring(a.b, v.number + 1, 1) letter
from (select 'WCRTV' b) a
join master..spt_values v on v.number < len(a.b)
where v.type = 'P'

然后将结果与表连接起来,最后从表中减去结果。


推荐阅读