如何去掉一个字段小数位的0

mylzw 2004-04-14 01:41:05
比如,有这样一个字段,里面都是小数,格式为:

数量
1.20
1.30
1.1130
1.440
1.50

如何去掉后面无实际意义的0啊。
我希望结果是

数量
1.2
1.3
1.113
1.44
1.5

注:数量字段的数据类型为varchar。
...全文
141 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mylzw 2004-04-14
  • 打赏
  • 举报
回复
谢谢大家~ 感动中。。。
CCEO 2004-04-14
  • 打赏
  • 举报
回复

100变成1了
zjcxc 元老 2004-04-14
  • 打赏
  • 举报
回复
CCEO(CSDN的CEO??) 的方法少考虑了没有小数点的情况.
zjcxc 元老 2004-04-14
  • 打赏
  • 举报
回复
--加0的考虑是多余的,可以不要:

select 数量=case charindex('.',数量) when 0 then 数量
else left(数量,len(数量)-patindex('%[^0]%.%',reverse(数量))+1) end
from 表
zjcxc 元老 2004-04-14
  • 打赏
  • 举报
回复
--测试

--测试数据
declare @t table(数量 varchar(10))
insert @t select 1.20
union all select 1.30
union all select 1.1130
union all select 1.440
union all select 1.50
union all select 150
union all select 1.50100
union all select 1.5

select 数量=case charindex('.',数量) when 0 then 数量
else left(数量,len(数量)-patindex('%[^0]%.%','0'+reverse(数量))+2) end
from @t

/*--测试结果

数量
----------
1.2
1.3
1.113
1.44
1.5
150
1.501
1.5

(所影响的行数为 8 行)
--*/
LANBAgaga 2004-04-14
  • 打赏
  • 举报
回复
update tablename set 数量=cast(数量 as float)
zjcxc 元老 2004-04-14
  • 打赏
  • 举报
回复
--因为float是非精度数据,所以如果用上面的方法,虽然简单,但可能产生数据偏差

--下面的方法复杂一点,但可以解决这个问题:

select 数量=case charindex('.',数量) when 0 then 数量
else left(数量,len(数量)-patindex('%[^0]%.%','0'+reverse(数量))+2) end
from 表
CCEO 2004-04-14
  • 打赏
  • 举报
回复
select REVERSE(right(REVERSE(数量),len(REVERSE(数量))-PATINDEX('%[^0]%',REVERSE(数量))+1)) as 数量 from tablename
饮水需思源 2004-04-14
  • 打赏
  • 举报
回复
数值型的数据字段定义成varchar,不合理
zjcxc 元老 2004-04-14
  • 打赏
  • 举报
回复
--测试

--测试数据
declare @t table(数量 varchar(10))
insert @t select 1.20
union all select 1.30
union all select 1.1130
union all select 1.440
union all select 1.50

select 数量=cast(cast(数量 as float) as varchar) from @t

/*--测试结果
数量
------------------------------
1.2
1.3
1.113
1.44
1.5

(所影响的行数为 5 行)
--*/
zjcxc 元老 2004-04-14
  • 打赏
  • 举报
回复
select cast(cast(数量 as float) as varchar) from 表

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧