sql语句:db2的一些简单方法,

截取字符串前后位

select substr('12345678',2,length('12345678')-2) from SYSIBM.SYSDUMMY1 

空字段处理

coalesce(col_name,'')    --如果字段con_name为null时返回空字符串("")

相当于Oracle的:

nvl(expr1,expr2)		 --如果expr1为null,则nvl返回expe2
nvl2(expr1,expr2,expr3)	 --如果expr1不为null,则nvl返回expe2;如果expr1为null,则nvl返回expe3

CAST是DB2或oracle中强制类型转换函数,使用方法如下:

--CAST(expression AS data_type)
--例如:
--CAST (id AS varchar(10))在使用中需要注意的是,如果id长度大于10 ,会报错;
--cast(id as int) 若ID之前为字符形式,且字符串中包括空格,则也会报错,DB中报-420错误;
--若expression 为null或'',转换时会报错;
--例如将'2013-10-14'这个字符串转换成20131014应该怎么写
SELECT cast(date('2013-10-14') as int) FROM SYSIBM.dual

DECIMAL数据类型计算

SELECT CAST(ROUND((COUNTNUM*0.6/0.8),6) AS decimal(11,6))  FROM POINTS_RULE

计算4/26的百分率:保留两位小数

SELECT CAST(CAST(4*100 AS decimal)/26 AS decimal(18,2)) from SYSIBM.SYSDUMMY1 

TRIM()函数

RTRIM()(去掉字符串右边的空格)、LTRIM()(去掉字符串左边的空格)以及TRIM()(去掉字符串左右两边的空格)

拼接字符串:

--RIGHT('*******' || RTRIM(char('#####')),n)
--一般要写n个"*",如果"#"的位数不足时,左边用"*"补够n位;如果"#"的位数是0时,全用"*"补全,
--如果不写n个"*",当"#"的位数为0时会报错,所以一般写n个"*"。
SELECT 'KHC' || RIGHT('**********' || RTRIM(char('22++')),10) FROM sysibm.dual;  --RIGHT('000000000' || RTRIM(CHAR(id)),9)

Merge into 详细介绍 :

--MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。 
--通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询, 
--连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。 
--这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。 
MERGE INTO TABLE01 T1
USING (SELECT '1001' AS a, 2 AS b FROM TABLE02)  T2 
ON ( T1.a=T2.a)
WHEN MATCHED THEN 
UPDATE SET T1.b= T2.b
WHEN NOT MATCHED THEN
INSERT (a,b) VALUES(T2.a,T2.b);

对数据按adress分组,并给每组添加唯一标志

merge into customermsg_qh a 
using(
	select * from (
		select row_number() over(partition by adress) rownum,idnum,adress from customermsg_qh	
	) b where b.rownum = 1
) as c on a.adress = c.adress
when matched then 
	update set a.flag = c.idnum
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值