SELECT из таблицы со списком Varying IN в предложении WHERE

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

Вотtemp а такжеtemp_id две таблицы

temp таблица содержит разделенный запятыми список идентификаторов, которыйVARCHAR2temp_id таблица содержит фактические идентификаторы, которыеNUMBER

Я хочу искать строки изtemp_id стол, получаяids из списка разделенных запятыми идентификаторов изtemp Таблица

//DDLs to create table
CREATE TABLE temp(ids VARCHAR2(4000));
CREATE TABLE temp_id(data_id NUMBER);

//DMLs to populate test data
INSERT INTO temp VALUES('1, 2, 3');

INSERT INTO temp_id VALUES(1);
INSERT INTO temp_id VALUES(2);
INSERT INTO temp_id VALUES(3);
INSERT INTO temp_id VALUES(4);
INSERT INTO temp_id VALUES(5);

Этот запрос не работает

SELECT * FROM temp_id WHERE data_id IN (SELECT to_number(COLUMN_VALUE) FROM XMLTABLE(SELECT ids FROM temp));

Рабочий запрос

SELECT * FROM temp_id WHERE data_id IN (SELECT to_number(COLUMN_VALUE) FROM XMLTABLE('1, 2, 3'));

Здесь разница между двумя запросами выше, я использую столбец изtemp таблица в первом запросе и прямая кавычкаvarchar2 во втором запросе. Не понимаю, почему не работает? Я что-то упустил? Я думаю, что может быть какое-то несоответствие типов данных, но не в состоянии это выяснить.

Ответы на вопрос(2)

Ваш ответ на вопрос