oracle 查询结果用逗号隔开(非存储过程)

1.死的

  SELECT trim(REGEXP_SUBSTR (replace('aa,bb,cc',''), '[^,]+', 1,ROWNUM)) as keywords
            from dual t
            CONNECT BY ROWNUM <=length(regexp_replace('aa,bb,cc','[^,]',''))+1
                              --LENGTH ('aa,bb,cc')-LENGTH (REPLACE ('aa,bb,cc',','))+1  和上面一样

2.活的俩种方法

(1).

            SELECT  distinct trim(REGEXP_SUBSTR(replace(ttt.keywords,' ',','), '[^,]+', 1,ttt.lv)) as keywords
             from (
                 select *
                 from (select t.keywords,nvl(length(regexp_replace(replace(t.keywords, ' ', ','),'[^,]','')),0) + 1 cnt
                        from (select distinct keywords from TEMP_TBL_KB_VIDEO_KEYWORD where keywords  IS NOT NULL) t) tt,
                     (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 100) cn
               where cn.lv <= tt.cnt
            ) ttt

(2).

      SELECT VIDEOID AS VIDEO_ID, KEYWORD AS KEYWORD
        FROM (WITH VKD AS (SELECT VIDEOID,
                                  REPLACE(TRIM(KEYWORDS), ' ', ',') AS KEYWORDS
                             FROM TEMP_TBL_KB_VIDEO_KEYWORD VVI_A
                            WHERE KEYWORDS IS NOT NULL
                           
                           )
               SELECT VIDEOID,
                      SUBSTR(T.KEYWORDS_LOOP,
                             INSTR(T.KEYWORDS_LOOP, ',', 1, C.LV) + 1,
                             INSTR(T.KEYWORDS_LOOP, ',', 1, C.LV + 1) -
                             (instr(T.KEYWORDS_LOOP, ',', 1, C.LV) + 1)) AS KEYWORD
                 FROM (SELECT VIDEOID,
                              ',' || KEYWORDS || ',' AS KEYWORDS_LOOP,
                              LENGTH(KEYWORDS || ',') -
                              NVL(LENGTH(REPLACE(KEYWORDS, ',')), 0) AS CNT
                         FROM VKD) T,
                      (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 100) C
                WHERE C.LV <= T.CNT)
                WHERE KEYWORD IS NOT NULL


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值