永发信息网

sql 中如何舍去小数最后一位为0 如:20.50只能取20.5

答案:4  悬赏:40  手机版
解决时间 2021-11-29 22:44
  • 提问者网友:玫瑰园
  • 2021-11-29 11:54
sql 中如何舍去小数最后一位为0 如:20.50只能取20.5
最佳答案
  • 五星知识达人网友:风格不统一
  • 2021-11-29 12:43
--去掉小数点后多余的0 2012-10-26
Declare @number nvarchar(20),@lastnum char(10)
--测试变量
Select @number = 25.00500
--记录最后一们数字
Select @lastnum = SUBSTRINg(@number,len(@number),1)
--循环判断,只要最后一位是0,就舍去
while (@lastnum = '0')
begin
Select @number = SUBSTRINg(@number,0,len(@number))
Select @lastnum = SUBSTRINg(@number,len(@number),1)
end
--结果处理,如果最后一位是‘.’,就舍去
Select case when @lastnum = '.' then substring(@number,0,LEN(@number)) else @number end
Go

--注:你可以把第二行代码的数字替换下,然后所有代码一起执行,看结果是否你你想要的。追问这个循环方法确实可以实现,我发现用cast(25.00500 as float)发现就可以实现了~
不过谢谢你了~
全部回答
  • 1楼网友:街头电车
  • 2021-11-29 16:06
不知道你是用的哪种数据库,Oracle中如果你设置的number类型。小数点后最后一位0是可以自动去掉的。
如果是字符串,那就要你自己写一个函数了。
  • 2楼网友:鱼忧
  • 2021-11-29 15:21
-----可以先转换为字符型(字符的总长度减1),再转回数值型。
cast(substring (cast (字段 as varchar(50)),1, len(cast (字段 as varchar(50)))-1) as decimal(18,1))
  • 3楼网友:封刀令
  • 2021-11-29 14:10
反正oralce里,
select TO_CHAr(filed)+0 from TABLE
就可以去末尾0了,并且小数点前的第一个0不被抹掉。(例:00.250-》0.25)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯