我有一个字符串数组说它是[“a1”,“a2”,“a3”]并希望将此数组传递给查询。
目的不是从数据库中选择此数组中的元素,而不是选择此数组中的元素,而是选择此数组中不在数据库中的元素。
假设有一张表
create table table1(
id int primary key not null,
name text
);
在table1的一边,它可能有[1,“a1”],[2,“a2”],[3,“b3”],[11,“str2”],[14,“california”],[15 “美国”],[16, “AUS”]
当我将数组[“a1”,“a2”,“a3”]传递给查询时,它可以发现元素“a3”不在table1中,因为“a1”和“a2”可以找到,但是“a3”不能。
我曾经想过用sql编写一个可能的解决方案,但似乎我无法写出查询
我的想法是
select [something] from [an array](/*this is something I passed from java or golang*/)
where [something] not in (select column from a table)
我的想法是表中的select列是一个集合而一个数组也是一个集合,但是在写入查询时,我坚持在那里
我只是想知道我是否有可能组织查询并将该地点留作“?”如果我将该数组传递给?,它将找到数组内部但不在表内的元素。
这里你最好的做法是使用像这样的表函数:
然后以逗号分隔的字符串形式将数组传递给查询。
例如:
SELECT name FROM dbo.mySplitFunction('a1,a2,13') WHERE name NOT IN (SELECT DISTINCT myField FROM myTable)