Как передать массив и выбрать элементы в этом массиве, которые не находятся внутри таблицы - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть массив строк, которые говорят, что это ["a1", "a2", "a3"], и я хочу передать этот массив в запрос.

Цель состоит не в том, чтобы выбирать элементы из базы данных, которые находятся в этом или не в этом массиве, а в том, чтобы выбрать элементы в этом массиве, которые не находятся внутри базы данных.

Предположим, что естьявляется таблицей, которая

create table table1(
id int primary key not null,
name text
);

в стороне от таблицы1, может иметь [1, "a1"], [2, "a2"], [3, "b3"], [11, "str2 "], [14," california "], [15," US "], [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)

Я думаю, что выбор столбца из таблицы является коллекцией, а массив также является коллекцией, но когдазаписывая в запрос, я застрял там

Мне просто интересно, возможно ли, что я мог бы организовать запрос и оставить это место как "?"и если я передам этот массив в?, он найдет элементы, которые находятся внутри массива, но не внутри таблицы.

1 Ответ

0 голосов
/ 03 апреля 2019

Ваш лучший способ действий здесь заключается в использовании табличной функции, подобной этой:

T-SQL, разделенная строка

Затем передайте свой массив в свой запрос вформа строки, разделенной запятой.

Например:

SELECT name FROM dbo.mySplitFunction('a1,a2,13') WHERE name NOT IN (SELECT DISTINCT myField FROM myTable)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...