PostgreSQL 中文(简体、繁体)数字转阿拉伯数字

函数代码


--中文汉字转阿拉伯数字
CREATE OR REPLACE FUNCTION udf_hanzi2digits(input_chinese text)RETURNS bigintLANGUAGE plpgsql
AS $function$DECLAREval INT8 :=0;--结果tmp INT8 :=0; -- 临时值num_unit INTEGER :=0;--数字单位ldig INTEGER[] ; --数值数组cndig TEXT ; --汉字字符dig INTEGER :=0; --个位数x INTEGER :=0;v_index INTEGER :=0; --数组的下标chinese TEXT[] := ARRAY['零','一','二','三','四','五','六','七','八','九','十','百','千','万','亿','两','壹','贰','叁','肆','伍','陆','柒','捌','玖','貮','拾','佰','仟','萬','億','〇'];digit INTEGER[] :=ARRAY[0,1,2,3,4,5,6,7,8,9,10,100,1000,10000,100000000,2,1,2,3,4,5,6,7,8,9,2,10,100,1000,10000,100000000,0];number_type TEXT[] := ARRAY['num','num','num','num','num','num','num','num','num','num','unit','unit','unit','unit','unit','num','num','num','num','num','num','num','num','num','num','num','unit','unit','unit','unit','unit','num'];
BEGINIF chinese@> regexp_split_to_array(input_chinese,'')=false thenraise notice '%','参数不全是中文数字!';RETURN NULL;END IF;foreach cndig in ARRAY regexp_split_to_array(reverse(input_chinese), '')  LOOPv_index := array_position(chinese, cndig);IF (number_type[v_index]) = 'unit' THENnum_unit := (digit[v_index]);IF num_unit = 10000 OR num_unit = 100000000 THENldig := array_prepend(num_unit,ldig);num_unit := 1;END IF;ELSEdig := (digit[v_index]);IF num_unit > 0 THENdig := dig * num_unit;num_unit := 0;END IF;ldig := array_prepend(dig,ldig);END IF;END LOOP;IF num_unit = 10 THENldig := array_prepend(10,ldig);END IF;foreach x IN  ARRAY  ldig LOOPIF (x = 10000 OR x = 100000000) THENval := val + (tmp*x);tmp := 0 ;ELSEtmp := tmp + x ;END IF;END LOOP;val := val + tmp;
RETURN val;
END;
$function$;

测试

--1. 小写汉字数字转阿拉伯数字
select udf_hanzi2digits('一百八十万零八十');
--1800080--2. 大写汉字数字转阿拉伯数字
select udf_hanzi2digits('壹佰捌拾贰');
--182--3. 混合汉字转换
select udf_hanzi2digits('一百八十万零壹佰捌拾贰');
--1800182

PostgreSQL 中文(汉字)数字转阿拉伯数字相关推荐

  1. 中文大写数字转换为阿拉伯数字(java)

    1.引言 昨天面试了微软的暑期实习生,二面的时候面试官给出了这道题,起初拿到题目的时候感觉还挺简单的,想着直接用遍历加一个缓存应该就能搞定了,但是和面试官沟通了一会儿之后发现自己没考虑到的还有很多,最 ...

  2. python 汉字数字转阿拉伯数字

    主要用于大写数字转阿拉伯数字 CN_NUM = {'〇': 0, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九' ...

  3. java 数字转换成汉字_Java-String-阿拉伯数字转换成中文汉字数字

    package com.test; public class NumberUtils { private static final String[] UNITS = { "", & ...

  4. python2 正则匹配中文汉字数字字母

    python2 re.compile匹配中文数字字母: # -*- coding: utf-8 -*- import redef chineseToUnic(ch):# 中文字符串转unicode编码 ...

  5. Python 中文(大写)数字转阿拉伯数字

    中文转数字,小数的化考虑点字进一步封装即可. # constants for chinese_to_arabic CN_NUM = {'〇' : 0, '一' : 1, '二' : 2, '三' : ...

  6. 汉字数字转阿拉伯数字 和 阿拉伯数字+千/百/万/亿 转阿拉伯数字

    感谢这位辛苦的大佬: http://blog.csdn.net/jjfly999/article/details/51052492#insertcode 项目的需要,把中文的汉字转成纯阿拉伯数字 比如 ...

  7. 中文汉字数字转罗马数字方法

    public static class ForChinese{static readonly Regex _nRegex = new Regex(@"[零一二三四五六七八九]+") ...

  8. 数字转换成中文汉字数字

    1 class Student { 2 static String[] ss = new String[]{"零", "壹", "贰", & ...

  9. JAVA 中文汉字转换阿拉伯数字(最终版,已修复了亿及亿以下的汉数字的转换,超过后的数字,暂时不支持)

    嘎嘎嘎,大写的尴尬,非常感谢Eliauk_cc-May反馈的bug,代码重新修改啦,鉴于之前过于复杂的逻辑,本次进行了简化 //判断是否为中文数字字符public static List<Str ...

最新文章

  1. hdu1716 排列2(排列生成算法)
  2. 国家计算机科学进展,高等学校计算机一级学科教学改革与科学办学最新进展.pdf...
  3. mysql存储引擎之myisam学习
  4. 无法确定域的标识_标识标牌设计的基本要求:虽然是基本要求,你未必也都知道哦...
  5. 产品管理有行业特殊性吗
  6. 游戏筑基开发之C语言编程技巧
  7. 13. PHP 表数据入口(table data gateway)
  8. oracle 偶尔登录超时,OracleClient,间歇性连接问题:应用程序挂起在OracleConnection.Open()上,没有超时,没有引发异常...
  9. 时序轮转的意思_《九州仙魔志》-烛龙:凡人的昼夜轮转,都在它眼睛开合之间...
  10. 谈目标绩效的一种想象
  11. Chrome:下载Chrome网上应用店扩展程序crx
  12. 【MySQL 8.0】导入 .frm .MYD .MYI
  13. 利用Latex在线表格绘制表格以及多行合并垂直居中
  14. 出国留学成绩要求主要看点在雅思
  15. 合作式智能运输系统车路协同云控系统V2X设备接入技术规范
  16. 电影评论画像制作(豆瓣肖申克的救赎为例)
  17. 用 RIME 定制输入法
  18. redis实现图形验证码的存储和验证
  19. 参数估计(点估计和区间估计)
  20. 中轴型SpA的两种诊断分支具有可比性

热门文章

  1. 2020年全球二手车出口情况分析:二手车出口主要集中在日美韩等发达国家[图]
  2. Android Linker详解
  3. stm32的unique ID全球唯一码
  4. 人脸对齐(三):Face Alignment by Explicit Shape Regression
  5. Variational Adversarial Active Learning
  6. oracle 分区,range-list,范围-列表复合分区
  7. 创作并推广机器人课程,给孩子带来快乐与成长
  8. 人民银行笔试经验分享,一定要看!
  9. 2022年中国无气喷涂机市场现状研究分析
  10. kindeditor java ssm_easyUI整合富文本编辑器KindEditor详细教程(附源码)