DB2数字类型转换成字符串类型,例:ORACLE与DB2
2016-10-17 23:51
513 查看
select 1/3 from sysibm.sysdummy1; 如果想要最初的语句1/3得到非零值。可以使用如下方法:
(1) select 1.0/3 from sysibm.sysdummy1; ---得到小数值 结果: --0.333333333333333333333333333333(2) select 1/3.0 from sysibm.sysdummy1; ----同样得到小数值 结果: --0.3333333333333333333(3) select cast(1 as float)/3 from sysibm.sysdummy1; --使用cast将1转为float型,然后再才除以3. 结果:0.3333333333333333(4) select dec(1,10,2)/3 from sysibm.sysdummy1; ---使用dec函数将1转换为decimal(10,2),然后除以3 结果:0.33333333333333333333333 其实如果想要把2个数的商四舍五入保存两位小数,oracle中可以直接使用round函数即可:select round(a/b,2) from dual;而db2中却要绕几个弯才行:需要使用select dec(cast(a as float)/b+0.005,10,2) from sysibm.sysdummy1; 先用cast转换a为float型,然后运算,再使用+0.005作为四舍五入,然后再使用dec截取2位小数。或者:select cast(round(cast(a as float)/b,2) as decimal(10,2)) from sysibm.sysdummy1; 先使用cast转a为float,然后运算,再使用round四舍五入取2位小数,然后使用cast转换为decimal(10,2)型。
例如:1.Oracle数据库SQL语句转换成DB2数据库SQL语句a.Oracle SQL语句
select *
from (select t.device_name,
count(t.device_name) as num,
to_char(round(count(t.device_name) /
(select sum(aa)
from (select count(t.device_name) as aa
from EQUIPMENT_MONITORING t
where 1 = 1
and t.device_area = 'AA区'
group by t.device_name)) * 100,
2),
'990.99') || '%' as num_percent,
sum(trunc(t.deal_time - t.occa_time) * 24 * 60 * 60) as occur
from EQUIPMENT_MONITORING t
where 1 = 1
and t.device_area = 'AA区'
group by t.device_name) v
where v.occur <> 0;
b.DB2 SQL语句
select t.device_name,
count(t.device_name) as num,
CHAR(CAST(round(cast(count(t.device_name) as float) /
(select sum(aa)
from (select count(t.device_name) as aa
from EQUIPMENT_MONITORING t
where 1 = 1
and t.device_area = 'AA区'
group by t.device_name)) * 100,
2) as decimal(3, 2))) || '%' as num_percent,
sum(dec(t.deal_time - t.occa_time) * 24 * 60 * 60) as occur
from EQUIPMENT_MONITORING t
where 1 = 1
and t.device_area = 'AA区'
group by t.device_name;
(1) select 1.0/3 from sysibm.sysdummy1; ---得到小数值 结果: --0.333333333333333333333333333333(2) select 1/3.0 from sysibm.sysdummy1; ----同样得到小数值 结果: --0.3333333333333333333(3) select cast(1 as float)/3 from sysibm.sysdummy1; --使用cast将1转为float型,然后再才除以3. 结果:0.3333333333333333(4) select dec(1,10,2)/3 from sysibm.sysdummy1; ---使用dec函数将1转换为decimal(10,2),然后除以3 结果:0.33333333333333333333333 其实如果想要把2个数的商四舍五入保存两位小数,oracle中可以直接使用round函数即可:select round(a/b,2) from dual;而db2中却要绕几个弯才行:需要使用select dec(cast(a as float)/b+0.005,10,2) from sysibm.sysdummy1; 先用cast转换a为float型,然后运算,再使用+0.005作为四舍五入,然后再使用dec截取2位小数。或者:select cast(round(cast(a as float)/b,2) as decimal(10,2)) from sysibm.sysdummy1; 先使用cast转a为float,然后运算,再使用round四舍五入取2位小数,然后使用cast转换为decimal(10,2)型。
例如:1.Oracle数据库SQL语句转换成DB2数据库SQL语句a.Oracle SQL语句
select *
from (select t.device_name,
count(t.device_name) as num,
to_char(round(count(t.device_name) /
(select sum(aa)
from (select count(t.device_name) as aa
from EQUIPMENT_MONITORING t
where 1 = 1
and t.device_area = 'AA区'
group by t.device_name)) * 100,
2),
'990.99') || '%' as num_percent,
sum(trunc(t.deal_time - t.occa_time) * 24 * 60 * 60) as occur
from EQUIPMENT_MONITORING t
where 1 = 1
and t.device_area = 'AA区'
group by t.device_name) v
where v.occur <> 0;
b.DB2 SQL语句
select t.device_name,
count(t.device_name) as num,
CHAR(CAST(round(cast(count(t.device_name) as float) /
(select sum(aa)
from (select count(t.device_name) as aa
from EQUIPMENT_MONITORING t
where 1 = 1
and t.device_area = 'AA区'
group by t.device_name)) * 100,
2) as decimal(3, 2))) || '%' as num_percent,
sum(dec(t.deal_time - t.occa_time) * 24 * 60 * 60) as occur
from EQUIPMENT_MONITORING t
where 1 = 1
and t.device_area = 'AA区'
group by t.device_name;
相关文章推荐
- oracle怎么把查询出来的数字类型结果转换为字符串类型
- 判断C#中的字符串是否是数字,如果是转换成int类型
- DB2中字符、数字和日期类型之间的转换
- ORACLE判断哪儿儿写数据字符串类型字段不能转换成日期格式
- 微软面试题——字符串转换成double类型数字
- C++中的《数字字符串类型-数字类型转换总结》
- java 实现将String字符串大写中文数字转换成int类型整数
- DB2中字符、数字和日期类型之间的转换
- Oracle字符串转换成数字函数to_number
- mysql将字符串类型转换成数字类型
- php面试题 数字字符串如何转换成整数类型
- string字符串类型转换为number数字类型
- PHP数据类型转换(字符串转数字,数字转字符串)
- DB2中字符、数字和日期类型之间的转换
- C# 的数据类型转换 c#字符串转换格式 c#日期数字字符串整形格式转换
- Oracle数据删除恢复和数字与字符串之间的转换
- Oracle 字符串转换TIMESTAMP类型或Date类型
- 关于字符和数字类型的索引,Oracle如何实现内部自动转换以及索引使用的验证测试
- db2 字符串转换 数字
- Related to Oracle SQL 关于检验字符串是否为数字类型的方法