十万火急求如何在SQL查询语句中实现数据格式转换,快点帮忙啊! ( 积分: 5 )

  • 主题发起人 主题发起人 zpselect
  • 开始时间 开始时间
Z

zpselect

Unregistered / Unconfirmed
GUEST, unregistred user!
要求如下:现有3个资料,(随意举例)
1:0.0100 转为0.01
2:23.0000 转为23
3:2.2350 转为 2.235
4:3.1233 其值不弯为: 3.1233
我想大家应该明白我的意思了吧!
 
要求如下:现有3个资料,(随意举例)
1:0.0100 转为0.01
2:23.0000 转为23
3:2.2350 转为 2.235
4:3.1233 其值不弯为: 3.1233
我想大家应该明白我的意思了吧!
 
做个函数处理一下,判断round(0.0100,3)=0.0100 从3一直到0,到不等为止返回值,
然后select 函数() 就ok了
 
转成字符串再处理,可能麻烦了点


declare @n_tmp numeric(15, 8),
@s_tmp varchar(20)

select @n_tmp = 23.0000

select @s_tmp = convert(varchar, @n_tmp)

while right(@s_tmp, 1) = '0' or right(@s_tmp, 1) = '.'
begin
select @s_tmp = substring(@s_tmp, 1, len(@s_tmp) - 1)
end

select @n_tmp = convert(numeric, @s_tmp)
 
fanliwen:
小數後面的值是不固定的,但是小數從後向前數,不能為0,使用round函數只能固定的裁取
的數字!
 
蛋炒飯:你的方法是正確的,但是我想在SQL的查詢語句中實現這一功能!可望指點!
 
select convert(float,colname) from ....




declare @dd varchar(8);
set @dd='2222.0200';

select convert(float,@dd)
 
无头骑土:我在查询分析器中测试结果如下:
select convert(float,23.5) 结果为 23.5
select convert(float,23.5895)后面加了三个数字,结果为:23.589500000000001
select convert(float,23.5890)最后为0 则结果为:23.588999999999999
后两个结果是错误的!第二个结果应为:23.5895
最后一个也是错误的!结果应为:23.589
 
你没见我定义成的是字符成的??
1:0.0100 转为0.01
2:23.0000 转为23
3:2.2350 转为 2.235
4:3.1233 其值不弯为: 3.1233
你的这些数据在数据库中是什么类型?
 
zpselect,小數後面的值是不固定的? 意思是小数点后边总共几位不清楚?也就是你的数据
里有0.0100 还有0.01000000000 ?如果是这样,你就找一个最长的小数位数,
从20(20位够了吧)循环到round(,20) round(,0) 。
 
我已經做出了,我做了兩次轉換!我定義的數據類型為decimal,小數點度默認為4位
如:select convert(varchar,(convert(float,23.6950)))
結果為:23.695
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
937
SUNSTONE的Delphi笔记
S
I
回复
0
查看
894
import
I
I
回复
0
查看
693
import
I
后退
顶部