日期:2014-05-16  浏览次数:20823 次

oracle 分割字符串 regexp_substr
表数据如下:
ids               id           
3,4,6             5
23,24,26,27   28

想要使用一个sql,将ids拆分后查询到如下记录。请教如何实现。
ids               id
3           5
4           5
6           5
23           28
24           28
26           28
27           28
------解决方案--------------------
select ids, id from(
  select regexp_substr(ids, '[^,]+',1,lvl) ids, lvl, id from t,
  (select level lvl from dual connect by
  level < =(select max(length(regexp_replace(ids,'[^,]','')))+1 max_tokens from t))
) where ids is not null order by id, lvl;