使用arraylist的sql查询

使用arraylist的sql查询,sql,oracle,Sql,Oracle,我有一个字符串的arraylist和一个字符串,它是这个列表的csv格式。 我想编写一个sql查询,在这个列表的基础上细化结果。 所以,我想要像这样的东西- select * from table_name where name in (`ArrayList<String> values` or `csv format string`). 我相信可以制定一些程序、函数等来解决这个问题。 我只是想知道如何才能做到这一点。 谢谢不清楚你所说的ArrayList到底是什么意思;因为Ora

我有一个字符串的arraylist和一个字符串,它是这个列表的csv格式。 我想编写一个sql查询,在这个列表的基础上细化结果。 所以,我想要像这样的东西-

select * from table_name where name in (`ArrayList<String> values` or `csv format string`).
我相信可以制定一些程序、函数等来解决这个问题。 我只是想知道如何才能做到这一点。
谢谢

不清楚你所说的ArrayList到底是什么意思;因为Oracle PL/SQL没有泛型,所以您在这里谈论的是C/Java/任何类型吗

无论如何,这里有一种方法可以将PL/SQL中的逗号分隔列表转换为PL/SQL表,并将其用于in搜索:

用法:

  select * from my_tab t where t.name in 
   (select * from table(in_list('A,B', ',')));

不清楚你所说的ArrayList到底是什么意思;因为Oracle PL/SQL没有泛型,所以您在这里谈论的是C/Java/任何类型吗

无论如何,这里有一种方法可以将PL/SQL中的逗号分隔列表转换为PL/SQL表,并将其用于in搜索:

用法:

  select * from my_tab t where t.name in 
   (select * from table(in_list('A,B', ',')));

如果我理解正确,那么您可以尝试:

declare
  v_al  arrayList := new arrayList('11', '22', '33');
  v_csv varchar2(32767) := '111,222,333,444';

  i number;
begin

  select count(*)
    into i
    from table_name
   where val in (select column_value from table(v_al))
      or val in (select distinct regexp_substr(v_csv, '[^,]+', 1, level) token
                   from dual
                 connect by level <= regexp_count(v_csv, ',') + 1);

  dbms_output.put_line(i);

end;
在本例中,我使用了count*,但它不是必需的,也可以位于游标中或作为sql查询


是只使用sql的小提琴

如果我理解正确,那么您可以尝试:

declare
  v_al  arrayList := new arrayList('11', '22', '33');
  v_csv varchar2(32767) := '111,222,333,444';

  i number;
begin

  select count(*)
    into i
    from table_name
   where val in (select column_value from table(v_al))
      or val in (select distinct regexp_substr(v_csv, '[^,]+', 1, level) token
                   from dual
                 connect by level <= regexp_count(v_csv, ',') + 1);

  dbms_output.put_line(i);

end;
在本例中,我使用了count*,但它不是必需的,也可以位于游标中或作为sql查询


是一个只使用sql的小提琴手,无法理解。解释正确的迭代!!这就是字符串数组列表。如果这是Integer ArrayList,那么list.toString可以帮助您。亲爱的,我不是问您在说什么。请把问题再读一遍。我不懂。解释正确的迭代!!这就是字符串数组列表。如果这是Integer ArrayList,那么list.toString可以帮助您。亲爱的,我不是问您在说什么。请把问题再读一遍。+1,是的,亲爱的,我把它弄好了。。谢谢。但就我所知,我想理解“类型”部分。你能详细解释一下吗是的,亲爱的我让它工作了。。谢谢。但就我所知,我想理解“类型”部分。你能详细说明一下吗。