表A:
id   uname
1    ,张三,李四,王五,
2    ,张三,赵六,要获得下面的数据,SQL怎么写?id  uname
1   张三
1   李四
1   王五
2   张三
2   赵六SQLOracle

解决方案 »

  1.   

    select distinct id, regexp_substr(uname, '[^,]+', 1, level) uname  from a
    connect by level <= length(regexp_replace(uname, '[^,]+')) - 1
    order by id;
      

  2.   

    如果你的oracle版本是10g以上,
    可以用这个:SELECT REGEXP_SUBSTR('a,b,c,d', '[^,]+', 1, rn) b   FROM dual,
           (SELECT ROWNUM rn FROM DUAL CONNECT BY ROWNUM <= 50) 
            WHERE REGEXP_SUBSTR('a,b,c,d', '[^,]+', 1, rn) IS NOT NULL
      

  3.   


    去掉connect by level <= length(regexp_replace(uname, '[^,]+')) -1中的减一