当前位置: 首页 > news >正文

达梦数据库用函数实现身份证合法校验

达梦数据库用函数实现身份证合法校验

拿走不谢~

CREATE OR REPLACE FUNCTION CHECK_IDCARD(A_SFZ IN VARCHAR2)
RETURN VARCHAR2
IS
TYPE WEIGHT_TAB IS VARRAY(17) OF NUMBER; 
TYPE CHECK_TAB IS VARRAY(11) OF CHAR;
WEIGHT_FACTOR WEIGHT_TAB := WEIGHT_TAB(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
CHECK_CODE CHECK_TAB := CHECK_TAB('1','0','X','9','8','7','6','5','4','3','2');
SUM_VAL NUMBER := 0;
MOD_VAL NUMBER;
BEGIN
IF LENGTH(A_SFZ) != 18 THEN RETURN '-1'; END IF; -- 长度校验
FOR I IN 1..17 LOOP
IF SUBSTR(A_SFZ,I,1) NOT BETWEEN '0' AND '9' THEN RETURN '-1'; END IF; -- 数字检查
SUM_VAL := SUM_VAL + TO_NUMBER(SUBSTR(A_SFZ,I,1)) * WEIGHT_FACTOR(I); -- ORACLE数组下标访问
END LOOP;
MOD_VAL := MOD(SUM_VAL,11);
IF SUBSTR(A_SFZ,18,1) != CHECK_CODE(MOD_VAL+1) THEN RETURN '0'; END IF; -- 校验码比对
RETURN '1'; -- 验证通过
END;

相关文章:

  • Ubuntu18系统安装
  • Android.bp中添加条件判断编译方式
  • LeetCode 题目 「二叉树的右视图」 中,如何从「中间存储」到「一步到位」实现代码的优化?
  • Ubuntu-搭建nifi服务
  • PHM学习软件|PHM预测性维护系统
  • JVM初探——走进类加载机制|三大特性 | 打破双亲委派SPI机制详解
  • Cesium.js(5):坐标转换
  • 如何使用Python调试学习两数之和算法
  • 物联网|无人自助台球厅源码|哪些框架支持多设备连接?
  • 成为一种国家战略范畴的新基建的智慧园区开源了
  • Interaction Toolkit 跳跃功能详解
  • 【C++初学】课后作业汇总复习(二)函数重载与类的成员函数重载,默认参数值函数——认识多态 - Toggle
  • AIDD-人工智能药物设计-大语言模型在医学领域的革命性应用
  • 03-框架篇 面试题-mk
  • k8s通过service标签实现蓝绿发布
  • LabVIEW中VI Scripting 特定对象解析
  • 7-c语言中的数组
  • TQTT_KU5P开发板教程---实现流水灯
  • 【技术】Ruby 生态概念速查表,通过对比nodejs生态(入门)
  • Linux 网络编程套接字
  • 网站建设在线推广/高级seo课程
  • 国家建设部官方网站/买链接网站
  • 宝塔没有域名直接做网站怎么弄/百度百科搜索入口
  • 做网站用哪几个端口 比较好/全国分站seo
  • 网站关键词重要吗/网站优化招聘
  • 购物网站建设要多少钱/电商网站建设 网站定制开发