说明:只是实现金额的大小写转换,可能不符合财务要求格式。只是列出了思路。实际应用中,需要写在过程里,加上检错判断,并修改为符合财务要求的格式。
--0。检错(在过程里判断)
--1。替换数字为汉字
SQL> SELECT translate(1234056789.12*100, '0123456789', '零壹贰叁肆伍陆柒捌玖') FROM dual;
TRANSLATE(1234056789.12*100,'0
------------------------------
壹贰叁肆零伍陆柒捌玖壹贰
--2。转换为金额
SELECT DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -15, 1)||'万', '万', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -15, 1)||'万')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -14, 1)||'仟', '仟', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -14, 1)||'仟')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -13, 1)||'佰', '佰', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -13, 1)||'佰')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -12, 1)||'拾', '拾', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -12, 1)||'拾')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -11, 1)||'亿', '亿', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -11, 1)||'亿')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -10, 1)||'仟', '仟', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -10, 1)||'仟')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -9, 1)||'佰', '佰', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -9, 1)||'佰')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -8, 1)||'拾', '拾', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -8, 1)||'拾')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -7, 1)||'万', '万', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -7, 1)||'万')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -6, 1)||'仟', '仟', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -6, 1)||'仟')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -5, 1)||'佰', '佰', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -5, 1)||'佰')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -4, 1)||'拾', '拾', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -4, 1)||'拾')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -3, 1)||'圆', '圆', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -3, 1)||'圆')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -2, 1)||'角', '角', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -2, 1)||'角')||
DECODE(substr('壹贰叁肆零伍陆柒捌玖壹贰', -1, 1)||'分', '分', '', substr('壹贰叁肆零伍陆柒捌玖壹贰', -1, 1)||'分')
FROM dual;
DECODE(SUBSTR('壹贰叁肆伍陆柒?
------------------------------------------------
壹拾贰亿叁仟肆佰零拾伍万陆仟柒佰捌拾玖圆壹角贰分