度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 197|回复: 5

[分享] 用SQL将数字转换为中文数字

[复制链接]

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
发表于 2018-6-12 17:42:17 | 显示全部楼层 |阅读模式
IF OBJECT_ID('fn_GetChnNum') IS NOT NULL
BEGIN
DROP FUNCTION dbo.fn_GetChnNum;
END;
GO
CREATE FUNCTION fn_GetChnNum ( @Number AS BIGINT )
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @ChnNum VARCHAR(100);
IF LEN(@Number) = 1
BEGIN
SET @ChnNum = SUBSTRING('零一二三四五六七八九', @Number + 1, 1);
END;
ELSE
BEGIN
DECLARE @Len INTEGER;
DECLARE @strNum AS VARCHAR(100);
DECLARE @i AS INTEGER;
DECLARE @NumWs AS INTEGER;
DECLARE @Unit AS VARCHAR(10);

SET @ChnNum = '';

SET @strNum = CAST(@Number AS VARCHAR(100));
SELECT @Len = LEN(@strNum);
SET @i = 1;

WHILE @i <= @Len
BEGIN
SET @Unit = '';
SET @NumWs = @Len + 1 - @i;
IF @NumWs > 1
BEGIN
SET @Unit = CASE WHEN @NumWs % 4 = 0 THEN '千'
WHEN @NumWs % 2 = 0 THEN '十'
WHEN @NumWs % 8 = 1 THEN '亿'
WHEN @NumWs % 4 = 1 THEN '万'
WHEN @NumWs % 2 = 1 THEN '百'
ELSE ''
END;
END;


SET @ChnNum = @ChnNum
+ dbo.fn_GetChnNum(SUBSTRING(@strNum, @i, 1));

SET @ChnNum = @ChnNum + @Unit;

SET @i = @i + 1;
END;
IF CHARINDEX('零元', @ChnNum) <> 0
SET @ChnNum = REPLACE(@ChnNum, '零元', '元');
IF CHARINDEX('零万', @ChnNum) <> 0
SET @ChnNum = REPLACE(@ChnNum, '零万', '万');
IF CHARINDEX('零亿', @ChnNum) <> 0
SET @ChnNum = REPLACE(@ChnNum, '零亿', '亿');
IF CHARINDEX('零百', @ChnNum) <> 0
SET @ChnNum = REPLACE(@ChnNum, '零百', '零');
IF CHARINDEX('零千', @ChnNum) <> 0
SET @ChnNum = REPLACE(@ChnNum, '零千', '零');
RETURN @ChnNum;
END;

RETURN @ChnNum;
END;
GO

--测试
SELECT dbo.fn_GetChnNum(203423124);





回复

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
 楼主| 发表于 2018-6-12 17:43:30 | 显示全部楼层
回复 支持 反对

使用道具 举报

542

主题

5919

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
发表于 2018-6-15 15:51:53 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
 楼主| 发表于 2018-6-15 17:49:34 | 显示全部楼层
回复 支持 反对

使用道具 举报

542

主题

5919

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
发表于 2018-6-16 14:22:54 | 显示全部楼层
回复 支持 反对

使用道具 举报

231

主题

2541

帖子

5807

积分

论坛元老

Rank: 8Rank: 8

积分
5807
 楼主| 发表于 2018-6-16 17:13:47 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2018-12-18 20:06 , Processed in 0.382265 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表