输入字符串到表

时间:2011-05-05 19:21:49

标签: sql plsql oracle10g

我在Oracle中为oracle 10g做一些调试。我有一个很大的输入字符串,用于“IN Clause”,即

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'))

现在@ andriy-m solution如果in字符串小于4000就可以工作。但是如果它更大呢?

2 个答案:

答案 0 :(得分:2)

您可能正在寻找this solution

答案 1 :(得分:0)

您可以将值转换为多行:

SELECT 'str2' AS col FROM dual
UNION
SELECT 'str3' FROM dual
UNION
SELECT 'str4' FROM dual
UNION
SELECT 'str5' FROM dual