首页 > 开发 > 综合 > 正文

SQL标量值函数:小写金额转大写

2024-07-21 02:47:53
字体:
来源:转载
供稿:网友
SQL标量值函数:小写金额转大写

我们日常开发业务系统中,作为统计报表中,特别是财务报表,显示中文金额经常遇到。

转换大小写的方法有很多,以下是从数据库函数方面解决这一问题.

效果如图:

调用:SELECT dbo.[Fn_ConvertRMB](192.4)

image

具体函数如下:

-- ============================================= -- 调用:SELECT dbo.[Fn_ConvertRMB](192.4) -- Create date: 2015-01-06 -- Description:    返回中文金额 -- ============================================= CREATE FUNCTION [dbo].[Fn_ConvertRMB] (@num NUMERIC(14, 2)) RETURNS VARCHAR(100) AS     BEGIN         DECLARE @n_data VARCHAR(20) ,             @c_data VARCHAR(100) ,             @n_str VARCHAR(10) ,             @i INT         SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS BIGINT) AS VARCHAR(20)), 14)         SET @c_data=''         SET @i=1         WHILE @i<=14             BEGIN                 SET @n_str=SUBSTRING(@n_data, @i, 1)                 IF @n_str<>' '                     BEGIN                         IF NOT ((SUBSTRING(@n_data, @i, 2)='00')                             OR ((@n_str='0')                             AND ((@i=4)                             OR (@i=8)                             OR (@i=12)                             OR (@i=14))))                             SET @c_data=@c_data+SUBSTRING('零壹贰叁肆伍陆柒捌玖', CAST(@n_str AS INT)+1, 1)                         IF NOT ((@n_str='0')                             AND (@i<>4)                             AND (@i<>8)                             AND (@i<>12))                             SET @c_data=@c_data+SUBSTRING('仟佰拾亿仟佰拾万仟佰拾圆角分', @i, 1)                         IF SUBSTRING(@c_data, LEN(@c_data)-1, 2)='亿万'                             SET @c_data=SUBSTRING(@c_data, 1, LEN(@c_data)-1)                     END                 SET @i=@i+1             END         IF @num<0             SET @c_data='(负数)'+@c_data         IF @num=0             SET @c_data='零圆'         IF @n_str='0'             SET @c_data=@c_data+'整'         RETURN(@c_data)     END

 

如果朋友们觉得以后可能会用到的话,欢迎转载,当然也可以推荐一下,谢谢。

PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表