kingbase将阿拉伯数字转换成金钱大写的数字格式

CREATE OR REPLACE FUNCTION udf_digits2hanzi(num bigint)
 RETURNS text
 LANGUAGE plpgsql
AS $function$
  DECLARE
    --节权
    unitPos INTEGER := 1;
  allChinese TEXT :='';
  chineseNum TEXT :='';
  needZero BOOLEAN := FALSE;
  strIns TEXT :='';
  sec INTEGER :=0;
  chnNumChar TEXT[] := ARRAY['零','壹','贰','叁','肆','伍','陆','柒','捌','玖'];
  chnUnitSection TEXT[] := ARRAY['','万','亿','万亿'];
  --权位
  sectionChinese TEXT :='';
  newUnitpos INTEGER := 1;
  v INTEGER := 0;
  zero BOOLEAN := TRUE;
  newSec INTEGER := 0;
  chnUnitChar TEXT[] := ARRAY['','拾','佰','仟'];
BEGIN
IF num=0 THEN
 RETURN '零';
END IF;
 
WHILE num > 0 LOOP
 sec := num % 10000;
 IF needZero THEN
    allChinese := chnNumChar[1] || allChinese;
 END IF;
 --//每小节部分用独立操作
 newSec := sec;
  WHILE newSec > 0 LOOP
 v := newSec % 10;
 IF v = 0 THEN
   IF (zero = FALSE) THEN
     zero := TRUE;
    chineseNum := chnNumChar[1] || chineseNum;
  END IF;
  ELSE
   zero := FALSE;
  sectionChinese := chnNumChar[v+1];
  sectionChinese := sectionChinese || chnUnitChar[newUnitpos];
  chineseNum := sectionChinese || chineseNum;
  END IF;
  newUnitpos := newUnitpos + 1;
 newSec := newSec/10;
  END LOOP;
  sectionChinese :='';
 newunitpos := 1;
 v := 0;
 zero := TRUE;
 newSec := 0;
 IF sec != 0  THEN
  strIns := chnUnitSection[unitPos];
  chineseNum := chineseNum || strIns;
  ELSE
   strIns := chnUnitSection[1];
  chineseNum := strIns || chineseNum;
 END IF;
 allChinese := chineseNum || allChinese;
 chineseNum := '';
  needZero := (sec < 1000) AND (sec > 0);
  num := num / 10000;
  unitPos := unitPos +1;
END LOOP;
IF (SUBSTRING(allChinese,1,2) = '壹拾') THEN
   allChinese := SUBSTRING(allChinese,2);
END IF;
RETURN allChinese;
END;
$function$;


调用

select udf_digits2hanzi(123566);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值