达梦数据库字符串切割-自定义函数
2015-10-16 19:11
302 查看
--根据分隔符返回分隔的组数
--取出根据某个字符切割后的第n个字符串
--调用方法
SELECT get_StrArrayLength('8a,9c,4c,5K',',') FROM SYSDBA.SYSDUAL ;
SELECT get_StrArrayStrOfIndex('8a,9c,4c,5K',',',3) FROM SYSDBA.SYSDUAL;
CREATE OR REPLACE FUNCTION get_StrArrayLength(STR VARCHAR(2000),SPLIT1 VARCHAR(10)) RETURN INT AS V_LOCATION INT; V_START INT; V_LENGTH INT; BEGIN STR:=LTRIM(RTRIM(STR)); V_LOCATION :=LOCATE(SPLIT1,STR); V_LENGTH :=1; WHILE V_LOCATION <>0 LOOP V_START:=V_LOCATION+1; V_LOCATION :=LOCATE(SPLIT1,STR,V_START); V_LENGTH :=V_LENGTH+1; END LOOP; RETURN V_LENGTH; END;
--取出根据某个字符切割后的第n个字符串
CREATE OR REPLACE FUNCTION get_StrArrayStrOfIndex(STR VARCHAR(2000),SPLIT1 VARCHAR(10), INDEX1 INT) RETURN VARCHAR(2000) AS V_LOCATION INT; V_START INT; V_NEXT INT; V_SEED INT; BEGIN STR:=LTRIM(RTRIM(STR)); V_START :=1; V_NEXT :=1; V_SEED :=LEN(SPLIT1); V_LOCATION :=LOCATE(SPLIT1,STR); WHILE V_LOCATION <>0 AND INDEX1 >V_NEXT LOOP V_START:=V_LOCATION+V_SEED; V_LOCATION :=LOCATE(SPLIT1,STR,V_START); V_NEXT :=V_NEXT+1; END LOOP; IF V_LOCATION=0 THEN V_LOCATION :=LEN(STR)+1; END IF; RETURN SUBSTRING(STR,V_START,V_LOCATION-V_START); END;
--调用方法
SELECT get_StrArrayLength('8a,9c,4c,5K',',') FROM SYSDBA.SYSDUAL ;
SELECT get_StrArrayStrOfIndex('8a,9c,4c,5K',',',3) FROM SYSDBA.SYSDUAL;
相关文章推荐
- haproxy实现mysql slave负载均衡
- MySQL存储引擎MyISAM和InnoDB的对比
- psql: FATAL: role “postgres” does not exist 解决方案
- SQL Server性能问题案例解析
- mysql 左外连接 右外链接 内连接
- mac 下的mysql ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock
- mysql创建外链失败1005错误解决方法
- mysql数据库时间字段CURRENT_TIME问题
- Oracle自定义函数fn_split,字符串中的#号去掉,instr和substr
- SQLPLUS登录oracle方式
- WINDOWS下更改MYSQL数据路径(datadir)后服务启动1067解决不能改变mysql数据库存储位置
- 几个常见的MySQL性能测试工具
- winform程序_根据输入的sql生成excel(字段名与sql一致)
- Redis 位操作
- 一个测试SQL2005数据库连接JSP档
- mysql安装及配置服务
- MySQL找出表中重复字段的内容
- Redis安装部署
- 分布式缓存-Memcached
- SQL:每年每月最高的两个温度