SQLSEVER 实现货币数字转中文汉字

news/2024/10/18 14:54:51

SQLSEVER 实现数字转换成中文(货币)

-- =============================================
-- Author:		LearnerPing
-- Create date: 2024/10/18
-- Description:	Change Number to Chinese
-- =============================================
Create FUNCTION GetNumberToChi
(	@p_amt NUMERIC(19,6)
)
RETURNS NVARCHAR(200) --返回返回值的数据类型
AS
BEGIN DECLARE @p_amt_str NUMERIC(19,2)DECLARE @returnStr NVARCHAR(200);-- 如果金额大于等于1亿,则返回 '##########'IF (@p_amt >= 1000000000) 	SET @returnStr = N'##########';ELSE-- 否则,返回 '00000000000'SET @returnStr = N'00000000000';SET @p_amt_str = ROUND(@p_amt,2)-- 将金额转换为12位字符串,并右对齐SET @returnStr = RIGHT(@returnStr + CAST(ROUND(@p_amt_str, 11, 2) AS NVARCHAR(12)), 12);-- 将数字替换为中文数字SET @returnStr = REPLACE(@returnStr, N'0', N'零');SET @returnStr = REPLACE(@returnStr, N'1', N'壹');SET @returnStr = REPLACE(@returnStr, N'2', N'贰');SET @returnStr = REPLACE(@returnStr, N'3', N'叁');SET @returnStr = REPLACE(@returnStr, N'4', N'肆');SET @returnStr = REPLACE(@returnStr, N'5', N'伍');SET @returnStr = REPLACE(@returnStr, N'6', N'陆');SET @returnStr = REPLACE(@returnStr, N'7', N'柒');SET @returnStr = REPLACE(@returnStr, N'8', N'捌');SET @returnStr = REPLACE(@returnStr, N'9', N'玖');-- 添加单位SET @returnStr = @returnStr + N'分';SET @returnStr = STUFF(@returnStr, LEN(@returnStr) - 1, 0, N'角');SET @returnStr = REPLACE(@returnStr, N'.', N'元');-- 添加金额单位SET @returnStr = STUFF(@returnStr, LEN(@returnStr) - 5, 0, N'拾');SET @returnStr = STUFF(@returnStr, LEN(@returnStr) - 7, 0, N'佰');SET @returnStr = STUFF(@returnStr, LEN(@returnStr) - 9, 0, N'仟');SET @returnStr = STUFF(@returnStr, LEN(@returnStr) - 11, 0, N'万');SET @returnStr = STUFF(@returnStr, LEN(@returnStr) - 13, 0, N'拾');SET @returnStr = STUFF(@returnStr, LEN(@returnStr) - 15, 0, N'佰');SET @returnStr = STUFF(@returnStr, LEN(@returnStr) - 17, 0, N'仟');SET @returnStr = STUFF(@returnStr, LEN(@returnStr) - 19, 0, N'亿');-- 替换零和单位SET @returnStr = REPLACE(@returnStr, N'零亿', N'零');SET @returnStr = REPLACE(@returnStr, N'零仟', N'零');SET @returnStr = REPLACE(@returnStr, N'零佰', N'零');SET @returnStr = REPLACE(@returnStr, N'零拾', N'零');SET @returnStr = REPLACE(@returnStr, N'零零零', N'零');SET @returnStr = REPLACE(@returnStr, N'零零', N'零');SET @returnStr = REPLACE(@returnStr, N'零万', N'万');SET @returnStr = REPLACE(@returnStr, N'零元', N'元');SET @returnStr = REPLACE(@returnStr, N'零角', N'零');SET @returnStr = REPLACE(@returnStr, N'零分', N'');-- 替换壹拾和佰拾SET @returnStr = REPLACE(@returnStr, N'壹拾', N'拾');SET @returnStr = REPLACE(@returnStr, N'佰拾', N'佰壹拾');-- 去除多余的零WHILE (LEFT(@returnStr, 1) = N'零') BEGINSET @returnStr = RIGHT(@returnStr, LEN(@returnStr) - 1);END IF (LEFT(@returnStr, 1) = N'万') SET @returnStr = RIGHT(@returnStr, LEN(@returnStr) - 1);IF (LEFT(@returnStr, 1) = N'元') SET @returnStr = RIGHT(@returnStr, LEN(@returnStr) - 1);WHILE (LEFT(@returnStr, 1) = N'零') BEGIN	SET @returnStr = RIGHT(@returnStr, LEN(@returnStr) - 1);END WHILE (RIGHT(@returnStr, 1) = N'零') BEGIN	SET @returnStr = LEFT(@returnStr, LEN(@returnStr) - 1);END -- 替换亿万和零元SET @returnStr = REPLACE(@returnStr, N'亿万', N'亿零');SET @returnStr = REPLACE(@returnStr, N'零元', N'元');-- 如果返回字符串为空,则返回 '零元'IF (@returnStr = N'') SET @returnStr = N'零元';-- 如果以元结尾,则添加 '正'IF (RIGHT(@returnStr, 1) = N'元') SET @returnStr = @returnStr + N'正';RETURN @returnStr;
END;

可以在保留两位小数的前提下转换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73066.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

javascript渲染OFD的库

目前使用javascript开发的OFD的渲染库主要有两个: ofd.js和liteofd,其中ofd.js开发比较早,liteofd是最近刚出现的js库。首先结论是ofd.js渲染效果没有liteofd好,因为ofd.js目前有一些效果没有支持,比如对字体没有比较好的解析和支持。 liteofd相对ofd.js效果更好,并且提供…

Redis 集群部署

Redis 集群部署Redis 集群部署 环境 系统:CentOS 7 版本:redis-7.2.6 下载地址:https://download.redis.io/releases/ 主从集群 结构 三个节点:一个主节点,两个从节点IP PORT 角色192.168.93.100 6379 master192.168.93.101 6379 slave192.168.93.102 6379 slave步骤 安装…

高等数学 6.1 定积分的元素法

在定积分的应用中,经常采用所谓的元素法。为了说明这种方法,先回顾一下曲边梯形的面积问题。 设 \(f(x)\) 在区间 \([a, b]\) 上连续且 \(f(x) \geqslant 0\) ,求以曲线 \(y = f(x)\) 为曲边、底为 \([a, b]\) 的曲边梯形的面积 \(A\) 。把这个面积 \(A\) 表示为定积分 \[A …

详解 JuiceFS 在多云架构下的数据同步与一致性

随着大模型流行,GPU 算力资源正变得日益稀缺,传统的“算力跟着存储跑”的策略需要转变为“存储跟着算力跑”。为了确保数据一致性和管理的便捷性,企业通常在特定地区的公有云上选择对象存储作为所有模型数据的集中存储点。当进行计算任务调度时,往往需要人工介入,手动进行…

Renderer

Renderer 模块 Renderer 模块的设置决定了粒子的图像或网格如何被其他粒子变换、着色和过度绘制。 粒子系统Unity中创建粒子系统渲染器模块视图 细节 使用渲染模式在多种 2D Billboard 图形模式和网格模式之间进行选择。当粒子代表固体游戏对象(例如岩石)时,3D 网格赋予粒子…

WDT

参考:https://zhuanlan.zhihu.com/p/711237133 模式 1.WDGIF_FAST_MODE:mode1 2.WDGIF_OFF_MODE:mode2 3.WDGIF_SLOW_MODE:mode0 默认初始化为WDGIF_SLOW_MODE,等待初始化完成后切换成WDGIF_FAST_MODEWDGIF_FAST_MODE设置:问题:反复重启WDGIF_SLOW_MODE模式下,初始化过程…

轻松上手-图片压缩秘籍

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

记上报信息格式异常问题的解决

本文记述遇到字符串中包含无效字符时的格式化异常问题的全过程。本文记述解决上报信息格式异常问题的全过程。 问题描述 生产环境监控上报无法解析终端信息,通过日志发现是PCN字段前面缺失#号,导致解析程序解析失败。正常情况下,应该展示如下内容:HD1234#PCN1234发生错误情…