返回顶部
首页 > 资讯 > 数据库 >oracle 身份证校验函数的实例代码
  • 780
分享到

oracle 身份证校验函数的实例代码

2024-04-02 19:04:59 780人浏览 八月长安
摘要

1、正则表达式写法: CREATE OR REPLACE FUNCTioN Func_checkidcard (p_idcard IN VARCHAR2) RETURN INT IS v_regst

1、正则表达式写法:


CREATE OR REPLACE FUNCTioN Func_checkidcard (p_idcard IN VARCHAR2) RETURN INT
IS
  v_regstr   VARCHAR2 (2000);
  v_sum     NUMBER;
  v_mod     NUMBER;
  v_checkcode  CHAR (11)    := '10X98765432';
  v_checkbit  CHAR (1);
  v_areacode  VARCHAR2 (2000) := '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,82,91,';
BEGIN
  CASE LENGTHB (p_idcard)
   WHEN 15
   THEN                              -- 15位
     IF INSTRB (v_areacode, SUBSTR (p_idcard, 1, 2) || ',') = 0 THEN
      RETURN 0;
     END IF;

     IF MOD (TO_NUMBER (SUBSTRB (p_idcard, 7, 2)) + 1900, 400) = 0
      OR 
      (
        MOD (TO_NUMBER (SUBSTRB (p_idcard, 7, 2)) + 1900, 100) <> 0
        AND 
        MOD (TO_NUMBER (SUBSTRB (p_idcard, 7, 2)) + 1900, 4) = 0
      )
     THEN                             -- 闰年
      v_regstr :=
        '^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}$';
     ELSE
      v_regstr :=
        '^[1-9][0-9]{5}[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}$';
     END IF;

     IF REGEXP_LIKE (p_idcard, v_regstr) THEN
      RETURN 1;
     ELSE
      RETURN 0;
     END IF;
   WHEN 18
   THEN                               -- 18位
     IF INSTRB (v_areacode, SUBSTRB (p_idcard, 1, 2) || ',') = 0 THEN
      RETURN 0;
     END IF;
    
     IF MOD (TO_NUMBER (SUBSTRB (p_idcard, 7, 4)), 400) = 0
      OR 
      (
        MOD (TO_NUMBER (SUBSTRB (p_idcard, 7, 4)), 100) <> 0
        AND 
        MOD (TO_NUMBER (SUBSTRB (p_idcard, 7, 4)), 4) = 0
      )
     THEN                             -- 闰年
      v_regstr :=
        '^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|[1-2][0-9]))[0-9]{3}[0-9Xx]$';
     ELSE
      v_regstr :=
        '^[1-9][0-9]{5}(19|20)[0-9]{2}((01|03|05|07|08|10|12)(0[1-9]|[1-2][0-9]|3[0-1])|(04|06|09|11)(0[1-9]|[1-2][0-9]|30)|02(0[1-9]|1[0-9]|2[0-8]))[0-9]{3}[0-9Xx]$';
     END IF;

     IF REGEXP_LIKE (p_idcard, v_regstr) THEN
      v_sum :=
          ( TO_NUMBER (SUBSTRB (p_idcard, 1, 1))
          + TO_NUMBER (SUBSTRB (p_idcard, 11, 1))
          )
         * 7
        +  ( TO_NUMBER (SUBSTRB (p_idcard, 2, 1))
          + TO_NUMBER (SUBSTRB (p_idcard, 12, 1))
          )
         * 9
        +  ( TO_NUMBER (SUBSTRB (p_idcard, 3, 1))
          + TO_NUMBER (SUBSTRB (p_idcard, 13, 1))
          )
         * 10
        +  ( TO_NUMBER (SUBSTRB (p_idcard, 4, 1))
          + TO_NUMBER (SUBSTRB (p_idcard, 14, 1))
          )
         * 5
        +  ( TO_NUMBER (SUBSTRB (p_idcard, 5, 1))
          + TO_NUMBER (SUBSTRB (p_idcard, 15, 1))
          )
         * 8
        +  ( TO_NUMBER (SUBSTRB (p_idcard, 6, 1))
          + TO_NUMBER (SUBSTRB (p_idcard, 16, 1))
          )
         * 4
        +  ( TO_NUMBER (SUBSTRB (p_idcard, 7, 1))
          + TO_NUMBER (SUBSTRB (p_idcard, 17, 1))
          )
         * 2
        + TO_NUMBER (SUBSTRB (p_idcard, 8, 1)) * 1
        + TO_NUMBER (SUBSTRB (p_idcard, 9, 1)) * 6
        + TO_NUMBER (SUBSTRB (p_idcard, 10, 1)) * 3;
      v_mod := MOD (v_sum, 11);
      v_checkbit := SUBSTRB (v_checkcode, v_mod + 1, 1);

      IF v_checkbit = upper(substrb(p_idcard,18,1)) THEN
        RETURN 1;
      ELSE
        RETURN 0;
      END IF;
     ELSE
      RETURN 0;
     END IF;
   ELSE
     RETURN 0;  -- 身份证号码位数不对
  END CASE;
EXCEPTION
  WHEN OTHERS
  THEN
   RETURN 0;
END fn_checkidcard;
/
Show Err;
您可能感兴趣的文档:

--结束END--

本文标题: oracle 身份证校验函数的实例代码

本文链接: https://lsjlt.com/news/52309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • oracle 身份证校验函数的实例代码
    1、正则表达式写法: CREATE OR REPLACE FUNCTION Func_checkidcard (p_idcard IN VARCHAR2) RETURN INT IS v_regst...
    99+
    2024-04-02
  • SqlServer2000身份证合法校验函数的实现方法
    这篇文章主要讲解了SqlServer2000身份证合法校验函数的实现方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。下面看下sqlserver2000身份证校验的代码,具体代...
    99+
    2024-04-02
  • node.js实现token身份验证的示例代码
    安装依赖 express-jwt npm i express-jwt 将token校验相关数据导入配置文件 // setting.js module.exports = {     ...
    99+
    2024-04-02
  • C#实现身份证验证功能的示例代码
    目录实践过程效果代码实践过程 效果 代码 public partial class Form1 : Form { public Form1() { ...
    99+
    2022-12-20
    C#身份证验证 C# 验证 C#身份证
  • jquery如何校验中国身份证号码
    这篇文章主要介绍jquery如何校验中国身份证号码,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!jquery 校验中国身份证号码实例详解大陆18位身份证(第二代身份证)身份号码是一组...
    99+
    2024-04-02
  • 一个简单的身份证校验
    需要椒盐虾身份证号的正确性,大致了搜了下, 感觉用datetime校验时间比正则,就改了下 代码 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time ...
    99+
    2023-01-30
    身份证 简单
  • node.js实现身份认证的示例代码
    请问昨天结束的早是对堆积在了今天吗,今天还来加个班更博,看在这个毅力的份上能否给亿点点推荐。 有个好消息有个坏消息,先说坏消息吧,就是在这么学下去我急需急支糖浆,来回顾回顾前面的知识...
    99+
    2024-04-02
  • 如何用sql实现18位身份证校验
    本篇文章为大家展示了如何用sql实现18位身份证校验,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。身份证校验码的计算方法1、将前面的身份证号码17位数分别乘以不同的...
    99+
    2024-04-02
  • Express实现Session身份认证的示例代码
    目录CookieHTTPCookieSessionSession VS CookieExpress 实现 Session 身份认证获取配置登录主页退出登录代码总汇Cookie HTT...
    99+
    2023-01-31
    Express Session身份认证 Express 身份认证
  • Java身份证验证方法实例详解
    Java身份证验证方法实例详解身份证号码验证 1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,      八位数字出生日...
    99+
    2023-05-31
    java 身份证 验证
  • Java如何实现身份证号码验证
    小编给大家分享一下Java如何实现身份证号码验证,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:package xxx;import ...
    99+
    2023-05-31
    java
  • Python实战小项目之身份证信息校验
    python小项目–身份证信息校验 目的 制作个程序,输入身份证号码,输出如下信息 性别 : 男 地区 : 福建省龙岩市永定县 出生年月日: 2000年05月01日 出生当日派出所...
    99+
    2024-04-02
  • PHP 函数在实现用户身份验证中的作用
    php 函数在用户身份验证中的作用:验证电子邮件和密码:filter_var() 用于验证电子邮件格式,password_verify() 匹配密码散列。实施会话管理:session_s...
    99+
    2024-04-24
    php 用户身份验证
  • Django中的JWT身份验证的实现
    1.认证与授权 1.验证:身份验证是验证个人或设备标识的过程。身份验证过程之一是登录过程。注册网站后,您的信息(ID,密码,名称,电子邮件等)将存储在其数据库中。之后,您无需创建帐...
    99+
    2024-04-02
  • Oracle数据库ODBC连接中的身份验证方式
    在Oracle数据库ODBC连接中,身份验证方式通常有以下几种: 使用用户名和密码进行身份验证:用户需要提供正确的用户名和密码才能连接到Oracle数据库。 使用Windows身份验证进行身份验证:用户可以使用其Windows登录凭...
    99+
    2024-07-15
    oracle
  • Spring WebFlux实现参数校验的示例代码
    请求参数校验,在实际的应用中很常见,网上的文章大部分提供的使用注解的方式做参数校验。本文主要介绍 Spring Webflux Function Endpoint 使用 Spring...
    99+
    2024-04-02
  • Asp.net Core中实现自定义身份认证的示例代码
    Asp.Net Core中虽然集成了许多常用的身份认证,但很多时候,我们还是需要实现自己的身份认证接口,本文这里就简单的介绍下如何实现自定义身份认证接口。 首先写一个简单的接口...
    99+
    2022-06-07
    自定义 ASP.NET net 示例 core ASP
  • springmvc的validator数据校验的实现示例代码
    一、什么是数据校验?这个比较好理解,就是用来验证客户输入的数据是否合法,比如客户登录时,用户名不能为空,或者不能超出指定长度等要求,这就叫做数据校验。数据校验分为客户端校验和服务端校验客户端校验:js校验服务端校验:springmvc使用v...
    99+
    2023-05-31
    spring mvc 数据
  • Android绘制验证码的实例代码
    在前面仿华为加载动画、仿网易音乐听歌识曲-麦克风动画中,我们通过绘图的基础知识完成了简单的绘制。在本例中,我们将绘制常见的验证码。一、效果图二、知识点与思路分析通过上面的效果图观察,我们可以看到里面有绘制的随机线条,随机绘制的验证码。绘制线...
    99+
    2023-05-31
    android 验证码 roi
  • Android字段验证的实例代码
    先给大家展示效果图: package com.example.walkerlogin1; import android.app.Activity; import and...
    99+
    2022-06-06
    Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作