• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

阿拉伯数字转大写中文_财务常用sql存储过程

mysql 搞代码 4年前 (2022-01-09) 20次浏览 已收录 0个评论

需求:输入阿拉伯数字,给出对应的中文大写,编写为存储过程或函数

例:输入12345,程序给出:壹万贰仟叁佰肆拾伍
例:输入10023040,程序给出:壹仟另贰万叁仟另肆拾

解决方案之一(在SqlServer2000中测试通过):
CREATE FUNCTION fun_cgnum
(@num INT)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @temp INT,@res INT,@i TINYINT
DECLARE @str VARCHAR(100),@no VARCHAR(20),@unit VARCHAR(16)
SELECT @str=”,@no=’另壹贰叁肆伍陆柒捌玖’,@unit=’拾佰仟万拾佰仟亿’
SET @temp=@num
SELECT @i=0,@res=@temp%10,@temp=@temp/10
WHILE @temp>0
BEGIN
IF @i=0
SET @str=SUBSTRING(@no,@res+1,1)
ELSE
SET @str=SUBSTRING(@no,@res+1,1)+SUBSTRING(@unit,@i,1)+@str
SELECT @res=@temp%10,@temp=@temp/10
SET @i=@i+1
END
SET @str=SUBSTRING(@no,@res+1,1)+SUBSTRING(@unit,@i,1)+@str
SET @str=REPLACE(@str,’另拾’,’另’)
SET @str=REPLACE(@str,’另佰’,’另’)
SET @str=REPLACE(@str,’另仟’,’另’)
SET @str=REPLACE(@str,’另拾’,’另’)
SET @str=REPLACE(@str,’另万’,’万’)
WHILE @i>0
BEGIN
SET @str=REPLACE(@str,’另另’,’另’)
SET @i=CHARINDEX(‘另另’,@str)
EN本文来源gao@daima#com搞(%代@#码@网2D
SET @str=REPLACE(@str,’另万’,’万’)
SET @str=REPLACE(@str,’亿万’,’亿’)
IF RIGHT(@str,1)=’另’
SET @str=LEFT(@str,LEN(@str)-1)
RETURN @str
END
GO

–测试:有0和没有0的情况
SELECT dbo.fun_cgnum(900000000),dbo.fun_cgnum(903002051),dbo.fun_cgnum(903002050)

PS:有兴趣的朋友可以继续考虑有小数点以及添加单位(元/角/分)的情况


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:阿拉伯数字转大写中文_财务常用sql存储过程
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址