Возможно ли, как я его храню?
Это, хотя и не рекомендуется, так как хранение списка с неизвестной / переменной длиной значений лучше достигается путем сохранения значений в другой связанной таблице (возможно, два, если используются отношения многие-многие, таблица, в которой хранятся сами значения, и таблица отображения / ссылки).
Есть ли какой-нибудь способ взять массив идентификаторов проектов и создать
запрос, который проверит столбец projectIds, если какой-либо из этих идентификаторов существует?
Предполагая, что ваша проблема не так проста, как, например, несколько projectid
считают, что ваша таблица может стать более похожей (может потребоваться миллион LIKE): -

Тогда можно увидеть, что использование WHERE Like ......... может легко стать длинным и, возможно, более простым для кодирования вне SQL.
Однако можно использовать рекурсивное общее табличное выражение (CTE), которое генерирует CTE ( s в приведенном ниже примере, который имеет rowid (не должно быть таблицей БЕЗ ROWID) Кластерные индексы и оптимизация БЕЗ ПУТИ ))
Следующая таблица подойдет для примера (включая DROP и CREATE таблицы (с именем table_a )): -
-- Drop and create the table
DROP TABLE IF EXISTS table_a;
CREATE TABLE table_a (projectid_list TEXT);
-- Add some data for testing
INSERT INTO table_a VALUES
('1,2,3'), -- id = 1
('2,3'), -- id = 2
('4,5,6,7'), -- id = 3
('3,2,1'), -- id = 4
('1,3,5,7,9,11'), -- id = 5
('99,1001,30000,100000000') -- id = 6
;
-- Display the table
SELECT * FROM table_a;
-- The RECURSIVE CTE
WITH RECURSIVE s(id,pvalue,remainder) AS
(
SELECT rowid AS id,'', projectid_list || ',' FROM table_a WHERE id
UNION ALL
SELECT id,
substr(remainder,0,instr(remainder,',')),
substr(remainder,instr(remainder,',') +1)
FROM s
WHERE remainder <> '' -- This ends the recursion
LIMIT 1000 -- Just in case end the recursion after 1000
)
SELECT id FROM s WHERE CAST(pvalue AS INTEGER) IN (1,2,3,11) GROUP BY id;
- Обратите внимание, что существует LIMIT 1000, он был включен для защиты во время тестирования и может быть удален
Приведенные выше результаты приводят к (приведенная выше таблица, содержащая список projectid_list на строку) и список rowid ( id , если это псевдоним столбца rowid ) согласно критерии поиска 1,2,3,11 в примере: -

Сам CTE выглядит следующим образом после постепенного получения идентификаторов проекта из списка в виде pvalue с id в качестве соответствующего rowid , остаток = список идентификаторов проекта, который используется для следующей итерации: -