首页 > 数据库 >MySQL金额数字转为大写中文

MySQL金额数字转为大写中文

时间:2024-01-29 18:02:09浏览次数:32  
标签:200 中文 varchar upper 大写 MySQL je declare

MySQL版本:5.7.34-log *通过创建函数的方法,目前可以实现整数金额的转换,网上暂未找到MySQL版本的故自己参照其他数据库版本的改编了一下,*仅供参考!!! 使用方法:select rmb(10000)

CREATE DEFINER = `root`@`%` FUNCTION `rmb_upper`(je int)
 RETURNS varchar(200)
    DETERMINISTIC
BEGIN
	#Routine body goes here...
	declare je_number varchar(200);
	declare je_upper varchar(200);
	declare je_part varchar(200);
	declare i int;
	
	set i=1;
	set je_upper='';
	
	while i<=length(je) do
	 
		set je_part= concat(
		case  substring(je, length(je)-i+1, 1)
			when '0' then '零'
			when '1' then '壹'
			when '2' then '贰'
			when '3' then '叁'
			when '4' then '肆'
			when '5' then '伍'
			when '6' then '陆'
			when '7' then '柒'
			when '8' then '捌'
			when '9' then '玖'
		end
		,
		case i
			when 1 then '元'
			when 2 then '拾'
			when 3 then '佰'
			when 4 then '仟'
			when 5 then '万'
			when 6 then '拾'
			when 7 then '佰'
			when 8 then '仟'
			when 9 then '亿'
		end);
		
		set je_upper=concat(je_part,je_upper);
		set i=i+1;
	end while;

	set je_upper = REPLACE(je_upper,'零拾','零');
	set je_upper = REPLACE(je_upper,'零佰','零');
	set je_upper = REPLACE(je_upper,'零仟零佰零拾','零');
	set je_upper = REPLACE(je_upper,'零仟','零');
	set je_upper = REPLACE(je_upper,'零零零','零');
	set je_upper = REPLACE(je_upper,'零零','零');
	set je_upper = REPLACE(je_upper,'零角零分','');
	set je_upper = REPLACE(je_upper,'零分','');
	set je_upper = REPLACE(je_upper,'零角','零');
	set je_upper = REPLACE(je_upper,'零亿零万零元','亿元');
	set je_upper = REPLACE(je_upper,'亿零万零元','亿元');
	set je_upper = REPLACE(je_upper,'零亿零万','亿');
	set je_upper = REPLACE(je_upper,'零万零元','万元');
	set je_upper = REPLACE(je_upper,'万零元','万元');
	set je_upper = REPLACE(je_upper,'零亿','亿');
	set je_upper = REPLACE(je_upper,'零万','万');
	set je_upper = REPLACE(je_upper,'零元','元');
	set je_upper = REPLACE(je_upper,'零零','零');

  if left(je_upper,1)='元' then	set je_upper = REPLACE(je_upper,'元','零元');
  end if;    

	set je_upper=concat(je_upper,'整');
	RETURN je_upper;
END;

参考文章:《sql 数字转人民币大写函数(两种方法)》

标签:200,中文,varchar,upper,大写,MySQL,je,declare
From: https://blog.51cto.com/u_16548857/9471638

相关文章

  • 配置mysql (Redhat)
    前提准备:MySQL下载 https://dev.mysql.com/downloads/mysql/ 当前安装版本5.71.检查是否安装mysql:rpm-aq|grepmysql 如果有输出则先停止服务:servicemysqldstart批量删除包rpm-eXXX--nodeps2.检查mariadb:rpm-qa|grepmariadb如果有输出则删除相关包 rpm-e......
  • 【MYSQL】4、mysql中的Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests
    原文链接:https://blog.csdn.net/qq_35462323/article/details/1318115931、Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests的含义?Innodb_buffer_pool_readsInnodb_buffer_pool_readsThenumberoflogicalreadsthatInnoDBcouldnotsatisfyfromthebuffer......
  • 解决MySQL设置时区时的错误Unknown or incorrect time zone: 'Asia/Shanghai'
    问题描述:在trino中配置了mysql.properties文件,但是通过trino客户端,执行命令showschemasfrommysql;查看数据库信息时报错:Errorlistingschemasforcatalogmysql:java.sql.SQLNonTransientConnectionException:Couldnotcreateconnectiontodatabaseserver.Attempted......
  • 将VSCode设置为中文(汉化)
    1、......
  • MySQL 常用工具
    系统数据库MySQL数据库安装完成后,自带了以下四个数据库,具体作用如下: 常用工具mysql该mysql不是指mysql服务,而是指mysql的客户端工具 mysqladminmysqladmin是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。 my......
  • GaussDB(for MySQL)剪枝功能,让查询性能提升70倍!
    作者,祝青平,华为云数据库内核高级工程师。擅长数据库优化器内核研发,9年数据库内核研发经验,参与多个TP以及AP数据库的研发工作。近日,华为云数据库社区下面有这样一条用户提问留言:请问,如何通过MySQL提升DISTINCT,尤其是多表连接下DISTINCT的查询效率?在回答这个问题之前,我们先了解一......
  • MySQL InnoDB MVCC
    MVCC-基本概念当前读读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select...lockinsharemode(共享锁),select...forupdate,update,insert,delete(排他锁)都是一种当前读。快照读简单的selec......
  • MySQL InnoDB事务原理
    事务事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 特性原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。一致性(Consistency):事务完成时,必......
  • Windows安装MySql时出现“Failed to find valid data directory”的错误
    1、......
  • MySql执行Sql语句时出现“MySqlException: Parameter ‘@maxNo‘ must be defined.”
    1、......