在Oracle中单独/组织字符串值

时间:2013-07-10 07:21:31

标签: sql string oracle oracle10g

我在Oracle 10g中有要求: 我需要选择使用in子句。

问题是我想在数据库中使用的字符串是逗号分隔的值,如单个列中的4435D,4436E,5656F, 5670L产品代码。

我想要的是'4435D','4436E','5656F', '5670L',我可以用作

Select * from sub_products 
where product_code in ('4435D','4436E','5656F', '5670L');

我们如何实现这一目标? 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

如何使用?

Select * from sub_products 
where product_code like '%4435D%' or product_code like '%5656F%' or product_code like '%5670L%';

答案 1 :(得分:0)

您可以使用CONTAINS关键字(请查看:Is there a combination of "LIKE" and "IN" in SQL?

WHERE CONTAINS(product_code,'4435D OR 4436E OR 5656F OR 5670L',1)>0

答案 2 :(得分:0)

您可以使用分层查询来分隔字符串中的值。

with str as (
  select '4435D,4436E,5656F,5670L' s from dual)
select regexp_substr(s,'[^,]+',1,level) from str
connect by regexp_substr(s,'[^,]+',1,level) is not null;

输出:

4435D
4436E
5656F
5670L

您可以在查询中将其用作子查询。样本fiddle