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 实现货币数字转中文汉字的更多相关文章

  1. JS货币数字转换中文

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等

    C#.Java实现按字节截取字符串,字符串中包含中文汉字和英文字符数字标点符号等. 在实际项目应用过程中,尤其是在web开发时可能遇到的比较多,就以我的(JiYF笨小孩管理系统)为例,再发布文章时候, ...

  3. c++ 实现将数字转换为中文数字输出

    实现如下函数: void printInChinese(int num); 这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法. 例如: 17 -> 一十七 ...

  4. Android实现中文汉字笔划(笔画)、中文拼音排序、英文排序

    发布时间:2018-11-16   技术:Android   概述 最近要做一个类似微信的,在登录界面选择国家地区的功能,微信有中文汉字笔画排序以及中文拼音排序等几种方式,如下所示: 简体中文 拼音排 ...

  5. C# 数字转换成汉字大写 数值转换成汉字大写

    1.数字转换成汉字大写 public string NumToChinese(string x) { //数字转换为中文后的数组 //转载请注明来自 http://www.shang11.com st ...

  6. js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换&#XXX函数代码

    最近看不少在线工具里面都有一些编码转换的代码,很多情况下我们都用得到,这里脚本之家小编就跟大家分享一下这些资料 Unicode介绍 Unicode(统一码.万国码.单一码)是一种在计算机上使用的字符编 ...

  7. 将金额数字转换为大写汉字的js函数

    //将金额数字转换为大写汉字的函数 function convertCurrency(money) { //汉字的数字 var cnNums = new Array('零', '壹', '贰', '叁 ...

  8. LCD1602显示中文汉字

    小子在西藏 2011-11-25编写 特别说明笔者是上面的作者,感谢那些原意分享知识的人.时隔5年我又看到了笔者当年写的东西,我想这期间还有许许多多的人 今天写在博客上,愿更多后来者可以学习. LCD ...

  9. Java正则表达式过滤出字母、数字和中文

    原文:http://blog.csdn.net/k21325/article/details/54090066 1.Java中过滤出字母.数字和中文的正则表达式 (1)过滤出字母的正则表达式 [^(A ...

  10. 用C#生成随机中文汉字验证码的基本原理

    前几天去申请免费QQ号码,突然发现申请表单中的验证码内容换成了中文,这叫真叫我大跌眼镜感到好笑,Moper上的猫儿们都大骂腾讯采用中文验证码.^_^  我不得不佩服腾讯为了防止目前网络上横行的QQ号码 ...

随机推荐

  1. python中numpy.random.seed设置随机种子是否影响子进程

    给出代码: from multiprocessing import Process import numpy as np class NN(Process): def __init__(self, i ...

  2. 强化学习算法如何将GPU利用率提高到100%——在线强化学习如何将GPU利用率提升至100%

    一直有个疑问,那就是"强化学习算法如何将GPU利用率提高到100%",在一些论坛中也有人会提出这样的问题,但是一直也没有人比较正面的回答过这个问题,为此正好自己又想到了这么一个问题 ...

  3. Ubuntu18.04终端alacritty安装及配置

    想在Ubuntu上安装alacritty终端,发现不能直接安装,在网上找到教程: Linux上安装使用最快的 GPU 加速的终端仿真器Alacritty 根据教程成功在Ubuntu18.04桌面系统上 ...

  4. 树莓派命令行配置wifi密码时如何实现密码加密(密文,非明文)

    首先需要知道,树莓派系统(原生系统)的wifi配置文件为: /etc/wpa_supplicant/wpa_supplicant.conf 配置该文件时,psk属性为密码,往往我们都是使用明文来进行配 ...

  5. 【干货】Apache DolphinScheduler2.0升级3.0版本方案

    升级背景 因项目需要使用数据质量模块功能,可以为数仓提供良好的数据质量监控功能.故要对已有2.0版本升级到3.0版本以上,此次选择测试了3.0.1 和 3.1.1 两个版本,对进行同数据等任务调度暂停 ...

  6. Jenkins部署架构概述

    1.Jenkins是什么 Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,起源于Hudson,主要用于持续.自动的构建/测试软件项目.监控外部任务的运行. Jenkins用Java ...

  7. SMU 2024 spring 天梯赛3

    SMU 2024 spring 天梯赛3 7-1 重要的话说三遍 - SMU 2024 spring 天梯赛3 (pintia.cn) I'm gonna WIN! I'm gonna WIN! I' ...

  8. 2023 ECF 游记

    录播 闭幕式 回顾 1.11 本来计划下午 vp 去年的 ecf,结果 zjj 忘记买票来投奔我了,所以鸽了.分块和莫队也没看 晚上收拾东西,完全装不下,应该早点寄走一些东西的 1.12 昨晚还想着别 ...

  9. Elsa V3学习之Hello Word

    前面文章介绍了Elsa的基础节点内容,接下来我们来开始实践一下. 启动项目 启动源码目录src\bundles中的Elsa.ServerAndStudio.Web的项目.这个项目包含Elsa Serv ...

  10. 使用vue-cli4快速搭建项目环境、使用webpack4打包自己的library类库、封装vue插件并发布

    快速创建 使用官方推荐的vue-cli创建项目如下: # 安装 Vue Cli npm install -g @vue/cli # 创建一个项目 vue create vanttest # 创建完成后 ...