[DB][ORACLE]逗号分隔列转行的实现方法

来源:互联网 发布:淘宝卖家漏发货不承认 编辑:程序博客网 时间:2024/06/01 07:14

  1. CREATE OR REPLACE VIEW V_CON_PROJECT AS  
  2. SELECT cp."CON_NUM",  
  3.        cp."PROJECT_CODE",  
  4.        cp."REQ_MONEY",  
  5.        cp."IS_HAS_BUILD_DEPT",  
  6.        cp."BO_CON_PROJECT_ID",  
  7.        REGEXP_SUBSTR(CP.MIS_NUM, '[^,]+', 1, L) AS MIS_NUM  
  8.   FROM BO_CON_PROJECT CP,  
  9.        (SELECT LEVEL L FROM DUAL CONNECT BY LEVEL <= 1000)  
  10.  WHERE L(+) <= LENGTH(CP.MIS_NUM) - LENGTH(REPLACE(CP.MIS_NUM, ',')) + 1 

2、说明:

      1)、表BO_CON_PROJECT中、MIS_NUM字段是以逗号分隔的数据(如:1101,1102,1103)

      2)、上述SQL中WHERE条件中的(+)必须加上、否则MIS_NUM字段为空的数据无法取得、而且加上(+)后、SQL执行效率提高几个数量级。



v:http://blog.csdn.net/szwangdf/article/details/6341227



原创粉丝点击