数据库number类型数据case when 比较时的,小心机
【摘要】 前言: 当我们因为前端老是改显示数据,而对应显示名称需要重新赋值,比如数据库表t1存了字段,ID,name其中ID是number类型的字段的。类似这样存储在数据表中。一、case when 字段重新赋值 其中t1是枚举表,为了规范显示名称,需要将显示值固定显示,因此使用case when 重新赋值。代码:select ID, SHOWVALUE,c...
前言:
当我们因为前端老是改显示数据,而对应显示名称需要重新赋值,比如数据库表t1存了字段,ID,name其中ID是number类型的字段的。类似这样存储在数据表中。
一、case when 字段重新赋值
其中t1是枚举表,为了规范显示名称,需要将显示值固定显示,因此使用case when 重新赋值。
代码:
select ID, SHOWVALUE,case when ID=-8.56664992678128E18 then '工伤'
when ID=-8.56628104882145E18 then '盐湖'
when ID=-8.56575376810264E18 then '乌尔禾'
end name from BI.Oa_Mjb
效果:
解析:
直接用来比较发现name字段无法带出来值。考虑是不是科学计数法的影响。那我们再试试。
二、第二种办法
代码:
select ID/1E18 ID, SHOWVALUE,case when ID/1E18=-8.56664992678128 then '工伤'
when ID/1E18=-8.56628104882145 then '盐湖'
when ID/1E18=-8.56575376810264 then '乌尔禾'
end name from BI.Oa_Mjb
效果:
解析:
哦豁,发现还是不行哦,BBQ了呀。那我们是不是把它转换为字符串比较吧。
三、第三中办法
代码:
select to_char(ID) ID, SHOWVALUE,case when to_char(ID)='-8566649926781284405' then '工伤'
when to_char(ID)='-8566281048821445944' then '盐湖'
when to_char(ID)='-8565753768102639719' then '乌尔禾' end name from BI.Oa_Mjb
效果:
解析:
统一为char类型后就能带出了,因此我们在使用number类型的数据时,记得转换类型后再比较。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)