我在一存储过程中返回的一个结果集,因为单位为万元,所以需要保留四个数字,但小数点后面只要所有非零数字,像这样的12.3000,14.0000,323.3440的数字,在返回时我只要12.3、14、323.344这样格式如何办呀?
(在表中字段为decmail,保留四个小数)
(在表中字段为decmail,保留四个小数)
解决方案 »
- 我在https网页中加载了mapbar,会报安全警告,请问有什么方式,可以解决这个问题?
- 恐怕只有高手才能解答的Cookie疑问
- asp.net嵌套自定义控件和嵌套aspx文件有何区别
- 大家帮忙看看这里怎样错了(C#)???
- 关于一个asp.net模版列和图形表报的问题,在线等,结帖就结分(100分).
- struct和class并存于一个.cs文件里表示什么?
- VS的两个问题
- 求助各位,看看啊,验证问题
- 10.1大家都有什么安排?
- 一个基本问题:我在一个页面放了一个服务器端按钮,里面有单击事件,当我执行完。。。。。。
- asp 和 .net 之间的 session 问题
- 求一个每一页显示12张图片分为3行4列的数据分页显示例子
这样不行吧?要是这样怎么办?1002.3000,这样也是12.3,而不是1002.3了。
如果不按照他的方法的话就要写函数了
比如ORACLE
select to_number('12.3000') from table
如此,无效的0将会自动被去除.
希望对你有所帮助
if EXISTS (SELECT *
FROM sysobjects
WHERE name =N'TestFun')
DROP FUNCTION TestFun
GOcreate function dbo.TestFun(@p decimal(18,4) )
returns Varchar(100)
AS
begin declare @str1 varchar(100)
declare @str2 varchar(100)
select @str1=cast(@p as varchar(100))
select @str1 =left(@p,charindex( '.',@p)-1)
select @str2=right(@p,len(@p)-charindex('.',@P)+1)
while charindex('0',right(@str2,1))>0
begin
select @str2=left(@str2,len(@str2)-1)
end
if len(@str2)=1
begin
select @str2=''
end
return (@str1+@str2)
end
GO------test
select dbo.TestFun(1034545.1240)
select dbo.TestFun(1034545.1200)
select dbo.TestFun(1034545.1000)
select dbo.TestFun(1034545.0100)
select dbo.testfun(1034545.0000)
-------------结果
1034545.124
1034545.12
1034545.1
1034545.01
1034545
if EXISTS (SELECT * FROM sysobjects WHERE name =N'TestFun')DROP FUNCTION TestFun
GO
create function dbo.TestFun(@p decimal(18,4) )
returns Varchar(100)
AS
begin declare @str1 varchar(100)
declare @str2 varchar(100)
select @str1=cast(@p as varchar(100))
select @str1 =left(@p,charindex( '.',@p)-1)
select @str2=right(@p,len(@p)-charindex('.',@P)+1)
while charindex('0',right(@str2,1))>0
begin
select @str2=left(@str2,len(@str2)-1)
end
if len(@str2)=1
begin
select @str2=''
end
return (@str1+@str2)
end
GO------test
select dbo.TestFun(1034545.1240)
select dbo.TestFun(1034545.1200)
select dbo.TestFun(1034545.1000)
select dbo.TestFun(1034545.0100)
select dbo.testfun(1034545.0000)-------------结果
1034545.124
1034545.12
1034545.1
1034545.01
1034545
昨天以为没人回帖,所以自己写了一个函数:create function del_zreo(@pass_value decimal(18,4))
returns varchar(64)
as
begin
declare @s_tmp varchar(64), @len int
set @s_tmp = convert(varchar(64),@pass_value)
while((right(@s_tmp,1)='0' or right(@s_tmp,1)='.')and charindex('.',@s_tmp)>0)
begin
set @len = len(@s_tmp)
set @s_tmp= left(@s_tmp,@len-1)
end
return @s_tmp
end
不知自己写的这个函数是否有bug,正在使用测试中。
本想多给你些分了,鉴于你口气不是很友好,所以只给你20分了,呵呵。