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号码 ...
随机推荐
- python中numpy.random.seed设置随机种子是否影响子进程
给出代码: from multiprocessing import Process import numpy as np class NN(Process): def __init__(self, i ...
- 强化学习算法如何将GPU利用率提高到100%——在线强化学习如何将GPU利用率提升至100%
一直有个疑问,那就是"强化学习算法如何将GPU利用率提高到100%",在一些论坛中也有人会提出这样的问题,但是一直也没有人比较正面的回答过这个问题,为此正好自己又想到了这么一个问题 ...
- Ubuntu18.04终端alacritty安装及配置
想在Ubuntu上安装alacritty终端,发现不能直接安装,在网上找到教程: Linux上安装使用最快的 GPU 加速的终端仿真器Alacritty 根据教程成功在Ubuntu18.04桌面系统上 ...
- 树莓派命令行配置wifi密码时如何实现密码加密(密文,非明文)
首先需要知道,树莓派系统(原生系统)的wifi配置文件为: /etc/wpa_supplicant/wpa_supplicant.conf 配置该文件时,psk属性为密码,往往我们都是使用明文来进行配 ...
- 【干货】Apache DolphinScheduler2.0升级3.0版本方案
升级背景 因项目需要使用数据质量模块功能,可以为数仓提供良好的数据质量监控功能.故要对已有2.0版本升级到3.0版本以上,此次选择测试了3.0.1 和 3.1.1 两个版本,对进行同数据等任务调度暂停 ...
- Jenkins部署架构概述
1.Jenkins是什么 Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,起源于Hudson,主要用于持续.自动的构建/测试软件项目.监控外部任务的运行. Jenkins用Java ...
- 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' ...
- 2023 ECF 游记
录播 闭幕式 回顾 1.11 本来计划下午 vp 去年的 ecf,结果 zjj 忘记买票来投奔我了,所以鸽了.分块和莫队也没看 晚上收拾东西,完全装不下,应该早点寄走一些东西的 1.12 昨晚还想着别 ...
- Elsa V3学习之Hello Word
前面文章介绍了Elsa的基础节点内容,接下来我们来开始实践一下. 启动项目 启动源码目录src\bundles中的Elsa.ServerAndStudio.Web的项目.这个项目包含Elsa Serv ...
- 使用vue-cli4快速搭建项目环境、使用webpack4打包自己的library类库、封装vue插件并发布
快速创建 使用官方推荐的vue-cli创建项目如下: # 安装 Vue Cli npm install -g @vue/cli # 创建一个项目 vue create vanttest # 创建完成后 ...