我有一个长5的字符串。所以长度可以是:5,10,15 ......
我想把这个字符串拆分成5个字符串,以传递IN
clausole:
String="00000111112222233333"
我会:
SELECT * FROM myTable WHERE code IN ('00000','11111','22222','33333')
可以在Sql中执行此操作吗?
答案 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);
使用connect by生成所需的行数
对于每一行,从字符串的开头找到任意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