oracle怎么拆分列 oracle按照分隔符拆分行

oracle 如何将 B 列 拆为6列呢

select *

创新互联建站专注于企业网络营销推广、网站重做改版、涉县网站定制设计、自适应品牌网站建设、H5高端网站建设成都做商城网站、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为涉县等各大城市提供网站开发制作服务。

from (select trim(regexp_substr(A, '[^,]+', 1, IDX)) ftype

from tablename a, (select level IDX from dual connect by level  1000) b

where a.A = '1101309030222121') c

where c.ftype is not null

上面的SQL比较麻烦,但一条SQL可以出来,你可以试一下

另外,你可以写一下函数进行拆分,把相关的逻辑放到函数体里面,看起来比较简洁

希望可以帮到你

oracle 拆分列

加个序号,然后自连接就行了,例子:(自己造的数据,表、字段自己替换)

--数据模拟

WITH TMP AS

(SELECT CASE

WHEN MOD(LEVEL, 2) = 1 THEN

'Logged In'

ELSE

'Logged Out'

END AS TYPE, SYSDATE + LEVEL / 24 AS TIME, '4001' AS ID

FROM   DUAL

CONNECT BY LEVEL = 10

UNION ALL

SELECT CASE

WHEN MOD(LEVEL, 2) = 1 THEN

'Logged In'

ELSE

'Logged Out'

END AS TYPE, SYSDATE + LEVEL  AS TIME, '5001' AS ID

FROM   DUAL

CONNECT BY LEVEL = 10),

--添加一个序号 

TMP1 AS

(SELECT T.*, ROW_NUMBER() OVER(PARTITION BY ID, TYPE ORDER BY TIME) RN

FROM   TMP T)

--自连接

SELECT A.TYPE, A.TIME, B.TYPE, B.TIME, A.ID

FROM   TMP1 A

LEFT   JOIN TMP1 B

ON     A.TYPE != B.TYPE AND

A.ID = B.ID AND

A.RN = B.RN

WHERE  A.TYPE = 'Logged In'

关于Oracle中实现单列拆分成多列的技术应用

1.前言:通过使用FineBI进行“点地图”方式来展现数据。

2.遇到的问题:原始表 经纬度 是一个字段保存,比如 xy列 中某行值为“130.111111,33.999999”。

3.解决的方法:通过 xy列 中’,‘逗号并使用函数substr()和函数instr() 处理后效果图和SQL示例如下

4.附注:

substr函数的用法 :

取得字符串中指定起始位置和长度的字符串 ,默认是从起始位置到结束的子串。

substr( string, start_position, [ length ] )    即:  substr('目标字符串',开始位置,长度)

instr函数的用法 :

格式一:instr( string1, string2 )   即:  instr(源字符串, 目标字符串),本案例是使用此格式。

格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] )   即:instr(源字符串, 目标字符串, 起始位置, 匹配序号)

解析:string2 的值要在string1中查找,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。

instr是一个非常好用的字符串处理函数,几乎所有的字符串分隔都用到此函数。

Oracle高手请接招:以逗号为分隔符把一列拆成3列

oracle 中可以用connect by把字符串按都好分割:

比如定义字符串:

pv_no_list :='23,34,45,56';

SELECT DISTINCT REGEXP_SUBSTR (pv_no_list,'[^,]+',1,LEVEL) as "token"

FROM DUAL

CONNECT BY REGEXP_SUBSTR (pv_no_list,'[^,]+',1,LEVEL) IS NOT NULL

order by 1

返回结果:

TOKEN

23

34

45

56

oracle如何将aaa_bbb_ccc(为一列中的内容)进行拆分3列

上面的语句是按照下划线来划分为三段,需要注意的oracle中substr函数,是从第i位开始截取长度为j的字段


网站标题:oracle怎么拆分列 oracle按照分隔符拆分行
地址分享:http://hbruida.cn/article/hehgpo.html