?????如何除去小数点后的不多余0???

tqhchina 2005-07-20 04:25:51
若表T有一个varchar(30)类型的字段D1,内容如下:
d1(字段名)
1.023
1.0000
4.220
大于1.00
小于5.00

如何在做查询时,把查询结果,转化为:
d1(字段名)
1.023
1
4.22
大于1.00 (“大于1”也可)
小于5.00 (“小于5”也可)

...全文
175 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tlychina 2005-07-21
  • 打赏
  • 举报
回复
select 'd1' =
CASE
when ISNUMERIC(d1)=1 then cast(cast(d1 as float) as varchar(30))
else d1 end
from t1
jackluo1981 2005-07-20
  • 打赏
  • 举报
回复
学习
zjcxc 2005-07-20
  • 打赏
  • 举报
回复
--示例数据
declare @t table(D1 varchar(30))
insert @t select '1.023'
union all select '1.0000'
union all select '4.220'
union all select '大于1.00'
union all select '小于5.00'
union all select '小于7'

--查询处理
select D1=case
when charindex('.',D1)=0 or right(D1,1)<>'0'
then D1
when substring(D1,patindex('%[^0]%',reverse(D1)),1)='.'
then left(D1,len(D1)-patindex('%[^0]%',reverse(D1))+1)
else left(D1,len(D1)-patindex('%[^0]%',reverse(D1)))
end
from @t

/*--结果
D1
------------------------------
1.023
1
4.22
大于1
小于5
小于7

(所影响的行数为 6 行)
--*/
tqhchina 2005-07-20
  • 打赏
  • 举报
回复
to AndXie99(谢波)

把29.8575转成了29,aaa转成了空
AndXie99 2005-07-20
  • 打赏
  • 举报
回复
select substring(dl,0,charINDEX(N'.',dl)) from 表名

要更新表则
update 表名 set dl=substring(dl,0,charINDEX(N'.',dl))

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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