您所查詢的是:
SELECT * FROM CAMPAIGN WHERE 1481125 IN
(select column_name from all_tab_columns where table_name = 'CAMPAIGN' AND data_type='NUMBER')
打破了下來,我們有:
SELECT * FROM CAMPAIGN WHERE 1481125 IN (<a set of numbers>)
和子查詢:
select column_name from all_tab_columns
where table_name = 'CAMPAIGN'
AND data_type='NUMBER'
子查詢是否會返回列名的列表例如
CAMPAIGN_COUNT
CAMPAIGN_ID
CAMPAIGN_NUMBER_OF_SOMETHINGS
您的查詢因此等效於:
SELECT * FROM CAMPAIGN WHERE 1481125 IN
('CAMPAIGN_COUNT', 'CAMPAIGN_ID', 'CAMPAIGN_NUMBER_OF_SOMETHINGS')
你可以看到爲什麼你會得到ORA-01722錯誤呢?
您需要編寫動態SQL才能實現您的目標。
'WHERE 1481125 IN(select column_name' problem here。Oracle try'cast'column_name' to number。 –