SQLSEVER 实现货币数字转中文汉字
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'零')
BEGIN
SET @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;
可以在保留两位小数的前提下转换
SQLSEVER 实现货币数字转中文汉字的更多相关文章
- JS货币数字转换中文
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
C#.Java实现按字节截取字符串,字符串中包含中文汉字和英文字符数字标点符号等. 在实际项目应用过程中,尤其是在web开发时可能遇到的比较多,就以我的(JiYF笨小孩管理系统)为例,再发布文章时候, ...
- c++ 实现将数字转换为中文数字输出
实现如下函数: void printInChinese(int num); 这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法. 例如: 17 -> 一十七 ...
- Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序
发布时间:2018-11-16 技术:Android 概述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 简体中文 拼音排 ...
- C# 数字转换成汉字大写 数值转换成汉字大写
1.数字转换成汉字大写 public string NumToChinese(string x) { //数字转换为中文后的数组 //转载请注明来自 http://www.shang11.com st ...
- js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XXX函数代码
最近看不少在线工具里面都有一些编码转换的代码,很多情况下我们都用得到,这里脚本之家小编就跟大家分享一下这些资料 Unicode介绍 Unicode(统一码.万国码.单一码)是一种在计算机上使用的字符编 ...
- 将金额数字转换为大写汉字的js函数
//将金额数字转换为大写汉字的函数 function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁 ...
- LCD1602显示中文汉字
小子在西藏 2011-11-25编写 特别说明笔者是上面的作者,感谢那些原意分享知识的人.时隔5年我又看到了笔者当年写的东西,我想这期间还有许许多多的人 今天写在博客上,愿更多后来者可以学习. LCD ...
- Java正则表达式过滤出字母、数字和中文
原文:http://blog.csdn.net/k21325/article/details/54090066 1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式 [^(A ...
- 用C#生成随机中文汉字验证码的基本原理
前几天去申请免费QQ号码,突然发现申请表单中的验证码内容换成了中文,这叫真叫我大跌眼镜感到好笑,Moper上的猫儿们都大骂腾讯采用中文验证码.^_^ 我不得不佩服腾讯为了防止目前网络上横行的QQ号码 ...
随机推荐
- AI生成的图片是否具有版权:如何认定美术作品的“抄袭”行为?
相关: 实务丨如何认定美术作品的"抄袭"行为? 首先,我认为AI生成的图片是否具有版权这个问题就不是一个问题,或者说这不是一个正确的提法,应该说AI生成的某张图片是否具有版权?也可 ...
- 【转载】 nohup和&区别
原文地址: https://www.cnblogs.com/xinzaiyuan/p/12097919.html =========================================== ...
- 【转载】 arXiv论文提交流程
原文地址: https://blog.csdn.net/u010705932/article/details/105834469 =================================== ...
- 人工智能领域在显卡短缺之下的思考——“【亦】微笑面对显卡短缺:不买更快乐”有感——mindspore快快成长
划水之时看了看B站视频: [亦]微笑面对显卡短缺:不买更快乐 https://www.bilibili.com/video/BV1RZ4y1c7qT 在显卡短缺之下不仅仅电脑游戏玩家被卡脖子就连高校和 ...
- 一款.NET开发的AI无损放大工具
前言 今天大姚给大家分享一款由.NET开源(GPL-3.0 license).基于腾讯ARC Lab提供的Real-ESRGAN模型开发的AI无损放大工具:AI-Lossless-Zoomer. Re ...
- ViT和MAE模型结合初探
介绍 transfomer在NLP领域的应用已经非常广泛,但是在CV领域的应用还比较少,主要是因为CV领域的数据是二维的,而transfomer是基于序列的,因此需要将二维数据转换成序列数据,这就是V ...
- k8s pvc扩容
#查看是否支持扩容 $ kubectl get sc ** -o yaml ··· allowVolumeExpansion: true #拥有该字段表示允许动态扩容 ··· #找到需要扩容的pvc ...
- jdk8的Steam流工作常用方法总结
Steam流工作常用方法总结 收集list 以某几个字段为键以内容为list的map Map<String, List<TVoucherDetail>> tVoucherDet ...
- AD(Active Directory )域的搭建与操作
AD 域的搭建与操作 一.准备工作 准备好 VM 虚拟机和 Server 的安装包. 二.安装 Server 2022 选择标准且有图形界面的进行安装. 选择自定义安装方式. 为虚拟机 server2 ...
- 2024年智能革命:HarmonyOS NEXT与盘古大模型5.0的颠覆性融合
引言 2024年,这一年注定在全球智能设备市场的历史上写下浓墨重彩的一笔.作为全球科技巨头,华为再次以其前瞻性的布局,推动了技术与应用的深度融合.在这个充满变革的时代,华为通过不断扩展的鸿蒙生态系统, ...