oracle split去逗号,行列转换
发布时间:2020-12-12 16:08:27 所属栏目:百科 来源:网络整理
导读:用10G开始支持的正则表达式 1.针对 '1','2','3','4','5'(逗号在字符串外面) [sql] view plain copy SQL SELECT COLUMN_VALUE FROM TABLE (SYS.ODCIVARCHAR2LIST( '1' , '2' , '3' , '4' , '5' )); COLUMN_VALUE -----------------------------------------
用10G开始支持的正则表达式 1.针对 '1','2','3','4','5'(逗号在字符串外面) [sql] view plain copy
copy
http://www.itpub.net/thread-1346178-1-1.html 众大牛们已经总结了行列转换的若干方法。今天发现了一种新的方法( ),和大家分享下。1.SYS.ODCIVARCHAR2LIST: SELECT COLUMN_VALUEFROM TABLE(SYS.ODCIVARCHAR2LIST('1','5')); COLUMN_VALUE -------------------------------------------------------------------------------- 1 2 3 4 5 Oracle 10G 以上版本才支持SYS.ODCIVARCHAR2LIST,其实SYS.ODCIVARCHAR2LIST只不过是一个TYPE, 所以在9I版本中可以通过创建一个TYPE来使用该功能: CREATE OR REPLACE TYPE MY_ODCIVARCHAR2LIST AS VARRAY(32767) OF VARCHAR2(4000); SELECT COLUMN_VALUEFROM TABLE(MY_ODCIVARCHAR2LIST('1',51); font-family:Arial; font-size:14px; line-height:26px">但是,当'1','5'作为一个字符串('1,5')就没有办法转换了: SELECT COLUMN_VALUEFROM TABLE(MY_ODCIVARCHAR2LIST('1,5')); 1,5 总结:(1)Table函数将数组里的内容通过SQL语句查询出来; (2)ODCIVARCHAR2LIST 在9I 及以上版本中均可使用。在9I中可通过创建TYPE,10G及以上直接使用SYS.ODCIVARCHAR2LIST; (3)ODCIVARCHAR2LIST 适用于字符集,不适用单个字符串,如果是单个字符串,可以通过参考2中(如下)方法实现。 欢迎大家讨论,提出更多更好的方法~~ 参考---------------------------------------------------------------- 2.其他方法实现列转行(大牛们早已经总结,仅供参考) (1) 利用CONNECT BY (使用9I,10G,11G) WITH T AS (SELECT'1,5' AS STR FROM DUAL) SELECTSTR1 FROM ( SELECTDISTINCT SUBSTR(T.CA,INSTR(T.CA,',C.LV) + 1, INSTR(T.CA,C.LV + 1) -(INSTR(T.CA,C.LV) + 1)) AS STR1 FROM (SELECT ',' || STR || ',' AS CA,LENGTH(STR || ',') -NVL(LENGTH(REPLACE(STR,')),0) AS CNT FROM T) T,51); font-family:Arial; font-size:14px; line-height:26px"> (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL <= 9) C WHERE C.LV <= T.CNT ORDER BY STR1); (2).正则表达式(使用10G及以上版本) WITH TEST AS (SELECT'1,51); font-family:Arial; font-size:14px; line-height:26px">SELECT DISTINCT REGEXP_SUBSTR(STR,]+',LEVEL) FROM TEST CONNECT BY ROWNUM <= 5; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- [gpu pro]hybrid min/max plane-based shadow maps
- dart – IconButton引发异常
- 更新表Postgresql中的日期
- 如何让Ajax Queue插件在jQuery 1.3中工作?
- ruby-on-rails – 在使用Pow运行Rails应用程序时似乎无法从
- oracle的LISTAGG函数 和 REGEXP_SUBSTR函数的使用
- 插入排序算法的C#实现
- c# – 在WPF中将ResourceDictionary应用于Frame中的Pages
- 依赖注入&控制反转 IoC 容器和Dependency Injection 模
- 手机探索者开发实录--实现设备端的MobileExplorer