CREATE DEFINER=`tm` FUNCTION `func_check_credit_code`(v_card varchar(32)) RETURNS varchar(32) CHARSET utf8mb3DETERMINISTIC
BEGIN
-- 此函数用于校验明文统一社会信用代码
-- 校验通过返回 1
-- 校验不通过返回 0 DECLARE v_flag varchar(32) DEFAULT '';  -- 是否有效标志DECLARE v_sum INT DEFAULT 0;   -- 校验第一步求和DECLARE v_mod varchar(32) DEFAULT '';   -- 校验第二步取余DECLARE i_flag varchar(32) DEFAULT '';  -- 校验第三步计算校验位DECLARE v_cstr varchar(200) DEFAULT '';  DECLARE v_wstr varchar(200) DEFAULT '';  -- 加权因子字符串-- 每一位对应的数字SET v_cstr = '0123456789ABCDEFGHJKLMNPQRTUWXY';
-- 对应数字的加权因子SET v_wstr = '1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28';-- 长度不等于18为空IF LENGTH(v_card) <> 18 THENRETURN 0;END IF;-- 判断第一位登记管理部门代码IF SUBSTRING(v_card,1,1) NOT IN (1,2,3,4,5,6,7,8,9,'A','N','Y') THENRETURN 0;END IF;-- 判断第二位机构类别代码
-- 判断机构编制IF SUBSTRING(v_card,1,1) = 1 THENIF SUBSTRING(v_card,2,1) NOT IN (1,2,3,9) THENRETURN 0;END IF;END IF;
-- 判断外交IF SUBSTRING(v_card,1,1) = 2 THENIF SUBSTRING(v_card,2,1) NOT IN (1,9) THENRETURN 0;END IF;END IF;
-- 判断司法行政IF SUBSTRING(v_card,1,1) = 3 THENIF SUBSTRING(v_card,2,1) NOT IN (1,2,3,4,5,9) THENRETURN 0;END IF;END IF;
-- 判断文化 IF SUBSTRING(v_card,1,1) = 4 THENIF SUBSTRING(v_card,2,1) NOT IN (1,9) THENRETURN 0;END IF;END IF;
-- 判断民政IF SUBSTRING(v_card,1,1) = 5 THENIF SUBSTRING(v_card,2,1) NOT IN (1,2,3,9) THENRETURN 0;END IF;END IF;
-- 判断旅游 IF SUBSTRING(v_card,1,1) = 6 THENIF SUBSTRING(v_card,2,1) NOT IN (1,2,9) THENRETURN 0;END IF;END IF;
-- 判断宗教IF SUBSTRING(v_card,1,1) = 7 THENIF SUBSTRING(v_card,2,1) NOT IN (1,2,9) THENRETURN 0;END IF;END IF;
-- 判断工会 IF SUBSTRING(v_card,1,1) = 8 THENIF SUBSTRING(v_card,2,1) NOT IN (1,9) THENRETURN 0;END IF;END IF;
-- 判断工商 IF SUBSTRING(v_card,1,1) = 9 THENIF SUBSTRING(v_card,2,1) NOT IN (1,2,3) THENRETURN 0;END IF;END IF;
-- 判断中央军委改革和编制办公室IF SUBSTRING(v_card,1,1) = 'A' THENIF SUBSTRING(v_card,2,1) NOT IN (1,9) THENRETURN 0;END IF;END IF;
-- 判断农业IF SUBSTRING(v_card,1,1) = 'N' THENIF SUBSTRING(v_card,2,1) NOT IN (1,2,3,9) THENRETURN 0;END IF;END IF;
-- 判断其他IF SUBSTRING(v_card,1,1) = 'Y' THENIF SUBSTRING(v_card,2,1) <> 1 THENRETURN 0;END IF;END IF;-- 判断区划代码前两位IF SUBSTRING(v_card,3,2) NOT IN (11,12,13,14,15,21,22,23,31,32,33,34,35,36,37,41,42,43,44,45,46,50,51,52,53,54,61,62,63,64,65,71,81,83) THENRETURN 0;END IF;-- 求和
SET v_sum =  (INSTR(v_cstr, SUBSTR(v_card, 1, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',1)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 2, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',2)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 3, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',3)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 4, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',4)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 5, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',5)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 6, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',6)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 7, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',7)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 8, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',8)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 9, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',9)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 10, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',10)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 11, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',11)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 12, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',12)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 13, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',13)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 14, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',14)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 15, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',15)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 16, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',16)),',',1))+
(INSTR(v_cstr, SUBSTR(v_card, 17, 1)) - 1)*REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(v_wstr,',',17)),',',1));-- 取余得到加权因子
SET v_mod = 31 - v_sum%31;
IF v_mod = 31 THEN SET v_mod = 0 ;
END IF;-- 判断校验位
SET i_flag = SUBSTR(v_cstr,v_mod+1,1);
IF i_flag = SUBSTRING(v_card,18,1) THEN
RETURN 1;ELSERETURN 0;END IF;END

MYSQL统一社会信用代码校验函数相关推荐

  1. Python实现统一社会信用代码校验(GB32100-2015)

    Python实现统一社会信用代码校验 统一社会信用代码国标校验 统一社会信用代码国标校验规则 示例说明 Python代码实现(仅实现GB- 32100-2015中的规则) 统一社会信用代码国标校验   ...

  2. 组织机构代码和统一社会信用代码校验规则以及java校验工具类

    组织机构代码 编码规则编辑 1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成. 本体代码采用系列(即分区段)顺序编码方法. 校验码按照以下公式计算: C9 ...

  3. 全网唯一正确身份证和社统一社会信用代码自定义表单校验器(身份证校验和社统一社会信用代码校验)

    话不多说,直入正题: 1.工具类: import * as moment from 'moment'; import {isUndefined} from 'util'; import {Abstra ...

  4. hive自定义函数实现组织机构代码、统一社会信用代码校验

    一.根据中华人民共和国国家标准全国组织机构代码(9位)编制规则实现规则校验 1.组织机构代码编码规则 1.1组织机构代码的组成 全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉 ...

  5. 身份证号码及统一社会信用代码校验

    /** * 身份证号码验证 * rule为form表单当前验证的filed对应的验证rule规则 * value为当前输入框返回值 * callback为回调函数,验证成功直接回调,验证失败回调函数返 ...

  6. JAVA 身份证校验与统一社会信用代码校验

    B话少说,上代码 原理默认大家都懂了,不懂的话可以百度一下 package com.microlinktech.rns.util;import lombok.Getter; import lombok ...

  7. 实现统一社会信用代码校验

    社会信用代码:由18位数字和大写的字母组成,第1位是登记管理部门代码,第2位是机构类别代码,第3~8位登记管理机关行政区划码,第9~17位主休标识码,第18位校验码.有五个部分组成. 具体详情请点击: ...

  8. 全国组织机构统一社会信用代码校验 - Java 版

    主要是网上错误的代码太多,为了避免大家踩坑,特此更正,详细规则如下: GB 32100-2015 法人和其他组织统一社会信用代码编码规则 private static final String BAS ...

  9. 身份证号与统一社会信用代码的校验

    身份证号与统一社会信用代码的表单校验 一.校验身份证号 <el-form ref="form" :model="form" :rules="ru ...

  10. 使用Java校验【统一社会信用代码】真假

    统一社会信用代码校验规则: 定义一个方法判断统一社会信用代码真假: /*** 验证机构代码真假** @param orgCode 组织机构信用代码* @return 真返回true 假返回false* ...

最新文章

  1. R语言基于机器学习算法进行特征筛选(Feature Selection)
  2. mysql 名字分组查询id_mysql进阶5:分组查询
  3. 2018-07-09--记录一次gitlab迁移事件及遇到的问题
  4. 【李宏毅2020 ML/DL】P4 Basic Concept
  5. CV学习笔记-BP神经网络训练实例(含详细计算过程与公式推导)
  6. Android启动的init进程
  7. 嵌入式基础面八股文——孤儿进程、僵尸进程、守护进程的概念(3)
  8. Snagit 2021 for mac截图工具 v2021.4.2(98044)汉化版
  9. syn flag flooding防御
  10. wireless 时好时断的一些解决的建议
  11. 混合式教学模式在课堂中的应用
  12. 2021年荷兰经济发展研究报告
  13. 用于文本去重(相似度计算)的Simhash算法学习及python实现(持续学习中)
  14. 域名 ip 校验正则表达式
  15. 帆软(FineReport)主子报表(报表联动)
  16. ems与nms_求教OMC、EMS、NMS的区别和不同?
  17. 安装VS2008的时候Windows Mobile 5.0 SDK R2 for pocket pc错误解决方案
  18. 【金猿人物展】数睿数据创始人兼CEO穆鸿:大数据价值创造关键在于应用普惠...
  19. SO逆向之x博国际版登陆分析
  20. 攻防世界之misc1

热门文章

  1. 前端程序员从菜鸟到大神必学的七本前端书籍
  2. lol服务器维护局,lol维护局 英雄联盟钻石维护局掉多少分
  3. activex服务器与com组件,COM和ActiveX控件设计.ppt
  4. php模拟腾讯微校第三方认证,身份验证技术方案1身份认证流程-微校-腾讯.PDF
  5. 使用mosquitto库命令与腾讯云通信
  6. codeforces 129C - Statues 图论 DFS
  7. 冲浪涨停预警,让你快速跟上涨停板,主力主升浪趋势,通达信选涨停股选股公式
  8. 研究生阶段的英语学习
  9. Leetcode no. 347
  10. 眼疲劳症如何自我检测