本文目录
db2 字符串处理
先写一个 REVERSE 函数, 用于字符串反转。(REVERSE 函数 Oracle 和 SQL Server 都有的, DB2 有可能没有。)你可以去百度查下 “db2 REVERSE” 这样的关键字。 调用的时候, 就是 REVERSE ( ’test_ip_steal’ ) 返回结果是 laets_pi_tset 然后使用 POSSTR , 找到 反转后的 第一个 _ 的位置。就是 POSSTR ( REVERSE ( ’test_ip_steal’ ) )相当于 POSSTR ( ’laets_pi_tset’ )返回结果是 6 然后用 SUBSTR 函数, 取得 后面的信息就是 SUBSTR ( REVERSE ( ’test_ip_steal’ ), POSSTR ( REVERSE ( ’test_ip_steal’ ) + 1 ) 相当于 SUBSTR ( ’laets_pi_tset’ , 6+1 )返回结果是 pi_tset 最后再把上面的结果, 再反转一次, 就是你要的最终结果了。 REVERSE (SUBSTR ( REVERSE ( ’test_ip_steal’ ), POSSTR ( REVERSE ( ’test_ip_steal’ ) + 1 ))
DB2 load数据时字段超长,怎么才能自动截断存入
这个好说,首先,你先建一个varchar(30)的temp表。然后将数据load进这个temp表。再substr()切取这个临时表的列前6位,装到你的目标表tablename中去不就可以了。你在文件中想要读取前6位可能行不通啊。
db2 怎样将一个字段按照特定格式来截断
用 INSERT函数 查找 第3个 / 和第4个 / 的位置。然后用SUBSTR函数 来获取 第3个 / 和第 4个 / 之间的值。
db2自定义函数查找字符“,”在字段中第N次出现的位置
不知道下面这种处理方式, 对你有没有参考价值
db2 -td@CREATE OR REPLACE FUNCTION f_split (p_str varchar(1000),p_split varchar(10)) RETURNS TABLE (result VARCHAR(100))LANGUAGE SQLRETURN with n(str, ori, pos) as ( values (p_str||p_split, 1, locate(p_split,p_str)) union all select str, pos+length(p_split), locate(p_split, str, pos+length(p_split)) from n where locate(p_split, str, pos+length(p_split))》0) select substr(str, ori, pos-ori) as result from n@函数创建完毕以后,可以开始做查询的处理.db2 =》 select result from table(f_split(’aa,bb,cc’,’,’))@RESULT--------------------SQL0347W 递归公共表表达式 "TEST.N" 可能包含无限循环。 SQLSTATE=01605aabbcc 已选择 3 条记录,打印 1 条警告消息。
DB2小数位截取
SELECT right(digits(CAST(1.123456 AS DECIMAL(20,4))*1000),6)/1000;其中DECIMAL(m,n)类型转化,m必须大于整数位+小数位位数和,n是小数位,不足自动补零,cast类型转换,digits整数前补零,right截取右边位数。