我正在爲oracle 10g在SQL中進行一些調試。我有一個很大的輸入字符串,用於「IN子句」,即輸入字符串到表
select * from table where col in ('str2','str3','str4','str5',...)
我想將in子句轉換爲行或表? 有沒有辦法做到這一點,即
select 'str2','str3','str4','str5', .. from dual
但這輸出多列,我想多行?
編輯:
這就是我要做的。假設我在tmp_table1中有一個excel數據(實際上不能創建),並且tmp_table1與IN子句相同,那麼下面的語句將給出缺少的鍵。
SELECT *
FROM tmp_table1
WHERE unique_id NOT IN (
SELECT unique_id
FROM table1
WHERE unique_id IN
('str1', 'str2', 'str3', 'str4'))
現在@安德烈·米solution工作如果字符串小於4000。但如果其更大?
謝謝,但正如我所說,我有一個很大的輸入,即大於或等於300輸入srings'str2','str3','str4','str5',...'str300'...工會看起來像很多工作:( – surya 2011-05-05 20:42:39
我不知道輸入來自哪裏(外部程序,文本文件,鍵盤...)但是,您可以將值插入臨時表並加入它來過濾您的查詢 – 2011-05-05 21:26:24
輸入來自excel文件,我複製並粘貼它們以形成in子句(通過將'\'替換爲',')我沒有創建臨時表的權限是否沒有其他方式? – surya 2011-05-05 21:52:13