sql – 在DB2中拆分VARCHAR以检索其中的值
发布时间:2020-05-24 08:58:33 所属栏目:MsSql 来源:互联网
导读:我有一个VARCHAR列,其中包含5个以’$’分隔的信息(2个CHAR(3)和3个TIMESTAMP). CREATE TABLE MYTABLE ( COL VARCHAR(256) NOT NULL);INSERT INTO MYTABLE VALUES ( AAA$000$2009-10-10 10:50:00$null$null$null ), ( AAB
|
我有一个VARCHAR列,其中包含5个以’$’分隔的信息(2个CHAR(3)和3个TIMESTAMP). CREATE TABLE MYTABLE (
COL VARCHAR(256) NOT NULL
);
INSERT INTO MYTABLE
VALUES
( 'AAA$000$2009-10-10 10:50:00$null$null$null' ),( 'AAB$020$2007-04-10 10:50:00$null$null$null' ),( 'AAC$780$null$2007-04-10 10:50:00$2009-04-10 10:50:00$null' )
;
我想提取第4场…… 'AAA$000$2009-10-10 10:50:00$null$null$null'
^^^^ this field
……有类似的东西 SELECT SPLIT(COL,'$',4) FROM MYTABLE 1 ----- 'null' 'null' '2009-04-10 10:50:00' 我按顺序搜索: > DB2内置字符串函数 精度:是的,我知道拥有这样的专栏并不是一个好主意…… 解决方法CREATE FUNCTION split(pos INT,delimeter CHAR,string VARCHAR(255))
LANGUAGE SQL
RETURNS VARCHAR(255)
DETERMINISTIC NO EXTERNAL ACTION
BEGIN ATOMIC
DECLARE x INT;
DECLARE s INT;
DECLARE e INT;
SET x = 0;
SET s = 0;
SET e = 0;
WHILE (x < pos) DO
SET s = locate(delimeter,string,s + 1);
IF s = 0 THEN
RETURN NULL;
END IF;
SET x = x + 1;
END WHILE;
SET e = locate(delimeter,s + 1);
IF s >= e THEN
SET e = LENGTH(string) + 1;
END IF;
RETURN SUBSTR(string,s + 1,e - s -1);
END!
用法: SELECT split(3,col) from mytable; -- or SELECT split(0,'-','first-second-third') from sysibm.sysdummy1; SELECT split(0,'returns this') from sysibm.sysdummy1; SELECT split(1,'returns null') from sysibm.sysdummy1; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- sql-server – 如何获取SQL Server表中每行的实际
- 数据库 – 在Web服务器上存储用户上载的文件
- sqlserver中根据字符分割字符串的最好的写法分享
- mysql 5.7.21解压版安装配置方法图文教程(win10)
- sql-server – SQL Large Table选择随机行策略
- Firebase – 添加数据库规则 – 路径包含无效字符
- mapping – 具有多个joinColumns的Doctrine 2 Ma
- 在dplyr连接中忽略大小写敏感性
- SQL Server 2005 UniqueIdentifier和C#数据类型
- sql-server – 资源池“internal”中没有足够的系
热点阅读
