Это иллюстрирует пример, который, я думаю, должен работать, но не работает:
select * from TABLE_A where KEY in (
select substr(DYNAMIC_KEY,3) from TABLE_B where DYNAMIC_KEY like '$$%' and RECORD_ID='104251893783388824');
По сути, внутренняя инструкция выбора возвращает набор результатов с префиксом $$. Это используется в качестве ключа поиска в TABLE_A, который не содержит префикса '$$' в ключе.
Если я запускаю внутренний оператор вручную:
select substr(DYNAMIC_KEY,3) from TABLE_B where DYNAMIC_KEY like '$$%' and RECORD_ID='104251893783388824'
Скопируйте первый результат, скажем, '8462928318772288542' и выполните внешний оператор выбора
select * from TABLE_A where KEY = '8462928318772288542'
Это работает.
Однако, если я запустил оператор выбора в (select ...), я не получу результата.
Редактировать
Используемая здесь база данных - Oracle 10g.
Столбец DYNAMIC_KEY в TABLE_B представляет собой VARCHAR2
Столбец KEY в TABLE_A - это CHAR 32