PLSQL实现字符串排序
来源:互联网 发布:智商碾压 知乎 编辑:程序博客网 时间:2024/05/19 18:15
概述:
现在有一张表tt,表结构如下:
CREATE TABLE tt (NAME VARCHAR2(20));INSERT INTO tt VALUES('abcd');INSERT INTO tt VALUES('dabc');INSERT INTO tt VALUES('ewqa');COMMIT;
需求1:
实现在name字段值的各字符之间加一个逗号,如abcd变成a,b,c,d
实现:
SELECT rtrim(REGEXP_REPLACE(NAME, '(.)', '\1,'),',') FROM tt;
需求2:
实现需求1的同时还要实现各字符的排序,如dabc变成a,b,c,d
实现:
WITH t AS (SELECT ROWNUM ID,NAME FROM tt),--根据id解析字符串数组并排序T_STR AS(SELECT ID, SUBSTR(NAME, LEVEL, 1) NEWSTR FROM T CONNECT BY LEVEL <= LENGTH(NAME) AND PRIOR ID = ID AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL ORDER BY ID, NEWSTR)--根据id将数据拼接SELECT ID, LISTAGG(NEWSTR, ',') WITHIN GROUP(ORDER BY ID, NEWSTR) FROM T_STRGROUP BY ID;
下面通过一函数来实现(11g):
--创建测试表CREATE TABLE tt (NAME VARCHAR2(20));INSERT INTO tt VALUES('abcd');INSERT INTO tt VALUES('dabc');INSERT INTO tt VALUES('ewqa');COMMIT;--创建一函数 fn_sortstrCREATE OR REPLACE FUNCTION fn_sortstr(str IN varchar2) RETURN VARCHAR2ASl_return VARCHAR2(4000);BEGIN WITH t AS (SELECT 1 ID,str FROM dual),--根据id解析字符串数组并排序 T_STR AS(SELECT ID, SUBSTR(str, LEVEL, 1) NEWSTR FROM t CONNECT BY LEVEL <= LENGTH(str) AND PRIOR ID = ID AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL ORDER BY ID, NEWSTR)--根据id将数据拼接SELECT LISTAGG(NEWSTR, ',') WITHIN GROUP(ORDER BY ID, NEWSTR) INTO l_return FROM T_STRGROUP BY ID;RETURN l_return;END;--使用SELECT fn_sortstr(NAME) FROM tt;
下面通过一函数来实现(10g):
–创建测试表
CREATE TABLE tt (NAME VARCHAR2(20));INSERT INTO tt VALUES('abcd');INSERT INTO tt VALUES('dabc');INSERT INTO tt VALUES('ewqa');COMMIT;--创建一函数 fn_sortstrCREATE OR REPLACE FUNCTION fn_sortstr(str IN varchar2) RETURN VARCHAR2ASl_return VARCHAR2(4000);BEGIN WITH t AS (SELECT 1 ID,str FROM dual), --根据id解析字符串数组并排序 T_STR AS(SELECT ID, SUBSTR(str, LEVEL, 1) NEWSTR FROM t CONNECT BY LEVEL <= LENGTH(str) AND PRIOR ID = ID AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL ORDER BY ID, NEWSTR)--根据id将数据拼接SELECT wmsys.wm_concat(NEWSTR) INTO l_return FROM T_STRGROUP BY ID;RETURN l_return;END;--使用SELECT fn_sortstr(NAME) FROM tt;
1 0
- PLSQL实现字符串排序
- 使用PLSQL对字符串进行排序
- PLSQL实现排序(冒泡、选择、快速)
- 在PLSQL中实现分割字符串
- Comparator实现字符串排序
- java实现字符串排序
- sqlserver实现字符串从小到大排序
- java实现字符串内排序
- java实现字符串全排序
- 递归实现:字符串反向排序.
- Lambda实现字符串数组排序
- plsql字符串截取
- Java实现字符串数组和字符串排序
- PLSQL实现分页
- plsql 实现md5
- PLSQL实现分页
- PLSQL实现分页查询
- plsql 实现md5
- page,session,application的请求区别+page,session的参数放置与获取
- 敏捷开发
- ubuntu 安装 Jenkins
- 轻松学习之三——IMP指针的作用
- Sublime Text3 安装及插件安装方法详解
- PLSQL实现字符串排序
- ios开发--UIBtutton、UITextField
- 员工年龄排序算法
- Android集成微信支付
- string.IsNullOrEmpty和string.IsNullOrWhiteSpace方法的区别
- 图解HTTPS
- 【颗粒归仓】(二)ajax的了解和应用
- glutInitContextVersion glutInitContextFlags和glutCreateWindow
- Jquery中each的三种遍历方法 转载