Oracle sql拆分字符串

时间:2014-10-30 19:07:25

标签: sql database oracle

我有一个长5的字符串。所以长度可以是:5,10,15 ...... 我想把这个字符串拆分成5个字符串,以传递IN clausole:

String="00000111112222233333"

我会:

SELECT * FROM myTable WHERE  code IN ('00000','11111','22222','33333')

可以在Sql中执行此操作吗?

2 个答案:

答案 0 :(得分:3)

select regexp_substr(s, '.{5}', 1, lvl) chnk 
from (select s, level lvl 
      from (select '00000111112222233333' s from dual) 
      connect by level <= length(s) / 5);
  1. 使用connect by生成所需的行数

  2. 对于每一行,从字符串的开头找到任意5个字符并获得第N次出现。

答案 1 :(得分:1)

使用分层查询拆分字符串,并使用substr来提取每个数据块:

with data as (select '00000111112222233333' s from dual)

select substr(s, (level-1)*5+1, 5) chnk
  from data
  connect by level <= length(s)/5

请参阅http://sqlfiddle.com/#!4/d41d8/37139