Oracle数据行分行方法示例
单排分
如果表数据只有一行,则可以直接使用原始表上直接连接的+规范方法,如:
选择regexp_substr('444.555.666 ',' { ^。} +,1,水平型)
从双
通过水平regexp_count连接('444.555.666、)+ 1
输出结果:
Col
----
四百四十四
五百五十五
六百六十六
多分裂
如果数据表有需要拆分的多行数据,也可以在原始表上使用连接+正则方法:
方法1
与T
(选择'111.222.333'col
从双
联盟的所有
选择'444.555.666'col
从双)
选择regexp_substr(COL,{ ^。} +,1级)
从T
通过水平regexp_count连接(COL,' )+ 1
和前面的
和之前的dbms_random.value > 0
结果uff1a
—
一百一十一
二百二十二
三百三十三
四百四十四
五百五十五
六百六十六
方法二
使用结构的最大行值与原始表相关联:
与T
(选择'111.222.333'col
从双
联盟的所有
选择'444.555.666'col
从双)
选择regexp_substr(COL,{ ^。} +,1,LV)
从T(从水平连接上选择双电平< 10)B
在b.lv regexp_count(t.col,' )+ 1
该方法提供的第二组数据小于最大可能值,然后将两个数据集的数据量关联起来,并将其分割,这个值被正确设置,分裂的行数相对一致,效率比方法直接连接到高。
方法三
使用表函数:
与T
(选择'111.222.333'col
从双
联盟的所有
选择'444.555.666'col
从双)
选择column_value
从T,
表(CAST(multiset)
(选择regexp_substr(COL,{ ^。} +,1级DD)
从双
通过水平regexp_count连接(t.col,' )+ 1)为
系统odcivarchar2list))一个。
结果uff1a
column_value
—
一百一十一
二百二十二
三百三十三
四百四十四
五百五十五
六百六十六
该方法的列名称是固定的,和column_value取决于sys.odcivarchar2list输出。这种方法比第二种方法大数据的分辨率好得多。
方法四
与T
(选择'111.222.333'col
从双
联盟的所有
选择'444.555.666'col
从双)
选择regexp_substr(COL,{ ^。} +,1,装饰(column_value))
从T,
XMLTable(concat(1,',regexp_count(t.col,' )+ 1))一;
注意:当数据量大的拆卸,常规的方法是小心使用,和substr +仪器可以用来代替常规。
如果上述方法的效率仍不理想,考虑使用PLSQL块。
总结
以上是全部内容,本文对Oracle数据线分离和多线的例子,希望对你有所帮助,感兴趣的朋友可以看看:PLSQL登录的默认密码的介绍,Oracle SQL语句优化技术要点分析,Oracle RAC和分布式数据库的差异,Oracle数据库启动阶段分析。你可以在任何时间留言。欢迎来谈谈这个问题。