设为首页 加入收藏

TOP

SQL:小数位保留(如果保留的数为0,自动查找下一位)(一)
2014-11-24 02:59:36 来源: 作者: 【 】 浏览:2
Tags:SQL: 数位 保留 如果 自动 查找 一位

SQL:小数位保留(如果保留的数为0,自动查找下一位)
[sql] www.2cto.com
if OBJECT_ID('GetDecimal') is not null
drop function GetDecimal
go
create function [dbo].[GetDecimal_D](
@value varchar(20), --处理的值
@decimalPlace int --小数位
) returns varchar(20)
as
/***************************************
--功能:小数位保留(如果保留的数为0,自动查找下一位)
--创建人:zhujt
--创建日期:2012-11-28 14:23:34
***************************************/
begin
declare @result varchar(20) --显示结果
if @value is not null
begin
--处理的值含有'L'
if charindex('L',@value)>0
set @result=cast(convert(decimal(18,8),replace(@value,'L',''))/2 as varchar)
--处理的值含有'e'
else if charindex('e',@value)>0 or charindex('E',@value)>0
set @result=cast(convert(decimal(18,8),convert(float,@value)) as varchar)
else set @result=@value
declare @index int, --小数点位置
@integerPart varchar(10), --整数部分
@decimalPart varchar(10), --小数部分
@decimalPartC varchar(10),--小数部分
@current int=0, --当前位置
@next int, --下一位的值
@j int=1, --循环变量
@power decimal(18,10)=1, --平方
@savePard decimal(18,10), --保留部分
@flag int=0
--小数点位置
set @index=charindex('.',@result)
--处理的值带有小数
if @index>0
begin
--获取整数部分
set @integerPart=substring(@result,1,@index-1)
--获取小数部分
set @decimalPart=substring(@result,@index+1,len(@result)-@index)
--获取保留小数位数值
set @current=substring(@decimalPart,@decimalPlace,1)
--获取下一位的值
set @next=substring(@decimalPart,@decimalPlace+1,1)
--如果处理值是小于1的值
if @integerPart='0'
begin
if @next>=5 --当前位置大于0
begin
while @j<=@decimalPlace
begin
set @power=@power*0.1
set @j+=1
end
set @savePard='0.'+substring(@decimalPart,1,@decimalPlace)
set @result=@savePard+@power
end
else
begin
set @decimalPartC=substring(@decimalPart,1,@decimalPlace)
if @current>0 --如果当前值大于0
begin
set @savePard='0.'+substring(@decimalPart,1,@decimalPlace)
set @result=@savePard
end
else if @current=0 and @decimalPartC=0 --如果当前值等于0
begin
while @j<=LEN(@decimalPart)
begin
set @power=@power*0.1
if @j>=@decimalPlace+1
begin
set @current=@next --当前位置
set @next=substring(@decimalPart,@j,1) --下一位置
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SQL: Date Utility 下一篇Sql:去除字符串中的相同的字符串..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ 语言社区-CSDN社 (2025-12-24 17:48:24)
·CSDN问答专区社区-CS (2025-12-24 17:48:22)
·C++中`a = b = c`与` (2025-12-24 17:48:19)
·C语言结构体怎么直接 (2025-12-24 17:19:44)
·为什么指针作为c语言 (2025-12-24 17:19:41)