То, что вы пытаетесь сделать, не имеет смысла, а просто помещает строковый литерал SQL-запроса в предложение IN
, а не все значения empid
, полученные из таблицы emp2
. Вместо этого просто используйте обычный подзапрос и вызовите TO_NUMBER
для emp_id
в таблице EMP1
, чтобы он правильно сравнивался с empid
в таблице emp2
.
SELECT emp_id, sal, name
FROM EMP1
WHERE TO_NUMBER(emp_id) IN (SELECT empid FROM emp2);
Если приведенный выше запрос все еще доставляет вам проблемы, то это может означать, что некоторые данные в emp_id
не являются правильным числом или, по крайней мере, не тем, что TO_NUMBER
может анализировать. В этом случае вы можете вместо этого попытаться привести значение empid
в подзапросе к символу:
SELECT emp_id, sal, name
FROM EMP1
WHERE emp_id IN (SELECT TO_CHAR(empid) FROM emp2);