假设我有一个简单的表,其中包含Id (主键)和Name行。现在我有了一个逗号分隔的ids列表,类似于- 2,5,6。我只想取这些逗号分隔的id,然后将每个id与现有数据进行比较。并且只返回那些唯一的ids,这意味着数据库中不存在。请注意,输出也应该是相同的输入格式,也就是逗号分隔格式。我正在使用Microsoft SQL server 2017。
我已经试过的是:
select * from DemoTable where Id 2,5,6 not in DemoTable但这似乎不正确的语法。我怎么才能修好它?
发布于 2019-09-05 05:23:01
你可以用这个。在这个问题上你需要从另一个角度看。我觉得很有趣。
实际上,您有一个id作为基的列表,您希望从不在某个表中的字符串中排除id。因此,首先我们需要找到id的列表,然后我们将它们排除在表的id中,以得到我们想要的结果。最后,您可以使用stuff或string_agg将最终结果转换为,分隔的字符串。
select Value from (
select value from string_split('1,2,3',',')) as t
where t.value not in (select id from demotable)您可以检查此链接的工作小提琴。小提琴。
发布于 2019-09-05 05:40:23
这是你的问题。
select string_agg(val, ',') as result
from (
select value as val from string_split('1,2,3',',')) as t
where t.val not in (select id from tableA)结果:(逗号分隔)
1,2,3https://stackoverflow.com/questions/57798814
复制相似问题