oracle 根据逗号分割查询

本文探讨了SQL查询中如何通过级联子查询和函数操作,对字段进行复杂处理,包括替换逗号、长度计算和字段截取。重点展示了在tablev和table中进行的字符串操作,以及如何使用LEFTJOIN连接数据,适用于数据清洗和预处理场景。
SELECT
  v.字段2,
  v.字段1
FROM
  (
            SELECT
              字段2 AS 字段2,
              substr(
              REPLACE ( 字段1, ',', ',' ),
              l,
              instr( REPLACE ( 字段1, ',', ',' ) || ',', ',', l ) - l 
              ) AS 字段1
            FROM
              (
            SELECT
              v.字段2 AS 字段2,
              v.字段1  AS 字段1 
            FROM
              table v
            WHERE v.字段1  is not null
            HAVING
              count( 1 ) >= 1 
            GROUP BY
              v.字段2,
              v.字段1 
              ) A,
  
              (
            SELECT LEVEL
              l 
            FROM
              DUAL CONNECT BY LEVEL <= (
                                        SELECT
                                          max( ( length( 字段1 ) ) - LENGTH( REGEXP_REPLACE ( REPLACE ( 字段1, ',', '@' ), '[^@]+', '' ) ) ) 
                                        FROM
                                          table
                                          ) 
              ) 
        
            WHERE
              substr( ',' || REPLACE ( 字段1, ',', ',' ), l, 1 ) = ',' 
  ) v
  LEFT JOIN table a ON a.字段2= v.字段2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值