你可以,但它有點難看。取決於Oracle版本
您可以使用this askTom thread的變體將數據解析到集合中並在您的SQL語句中使用集合。這應該可以在8.1.5以後的任何版本的Oracle中使用,但多年來語法已經變得更簡單了。
SQL> create or replace type myTableType as table
2 of varchar2 (255);
3/
Type created.
SQL> ed
Wrote file afiedt.buf
1 create or replace
2 function in_list(p_string in varchar2) return myTableType
3 as
4 l_string long default p_string || ',';
5 l_data myTableType := myTableType();
6 n number;
7 begin
8 loop
9 exit when l_string is null;
10 n := instr(l_string, ',');
11 l_data.extend;
12 l_data(l_data.count) :=
13 ltrim(rtrim(substr(l_string, 1, n-1)));
14 l_string := substr(l_string, n+1);
15 end loop;
16 return l_data;
17* end;
SQL>/
Function created.
SQL> select ename
2 from emp
3 where empno in (select column_value
4 from table(in_list('7934, 7698, 7521')));
ENAME
----------
WARD
BLAKE
MILLER
您還可以使用正則表達式爲this StackOverflow thread
SQL> ed
Wrote file afiedt.buf
1 select ename
2 from emp
3 where empno in (select regexp_substr(str, '[^,]+',1,level)
4 from (select '7934, 7698, 7521' str from dual)
5* connect by level <= regexp_count(str,'[^,]+'))
SQL>/
ENAME
----------
WARD
MILLER
BLAKE
你是說,你需要找到'table'其中的記錄'table.id'在* any *'subidtable.subid'中?就像您發佈的示例數據一樣,您是否需要在'(1,2,3,6,9,18,19)'中用'id'在'table'中查找所有記錄? – ruakh 2012-02-08 15:05:10
你可以規範這張桌子嗎?即你可以創建另一個表並將逗號分隔的值轉換爲單個數字嗎? – 2012-02-08 15:07:06
在你的例子中,'table'中'id'字段的數據類型是什麼?只要數據類型匹配(或將其轉換),您應該可以在Oracle中使用IN條款。 – ProfessionalAmateur 2012-02-08 15:07:49