数据库number类型数据case when 比较时的,小心机

目录

前言:

一、case when 字段重新赋值        

代码:

效果:

 解析:

二、第二种办法

代码:

效果:

解析:

三、第三中办法

代码:

效果:

解析:

前言:

        当我们因为前端老是改显示数据,而对应显示名称需要重新赋值,比如数据库表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类型的数据时,记得转换类型后再比较。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

他们叫我技术总监

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值