我在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就可以工作。但是如果它更大呢?
答案 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