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

oracle 11g写一个判断是否是身份证的函数,函数名称为:FUN_IS_IDENNO

下面是一个用于判断是否是身份证号码的Oracle 11g函数(FUN_IS_IDENNO)。身份证号码通常为18位(或者旧的15位),前17位为数字,第18位为数字或字母X,并且需要符合一定的规则,例如出生日期是否合理,校验位是否正确等。函数来自chatgpt,测试无误

函数逻辑:

  • 1 输入参数:p_idenno,传入的身份证号码。
  • 2 校验逻辑
    1. 判断身份证号的长度是否为18位。
    2. 检查前17位是否为数字。
    3. 验证生日部分是否为有效日期。
    4. 通过身份证的加权因子和校验位规则计算第18位校验码是否正确。
  • 3 返回值
    1. YES 表示身份证号有效。
    2. NO 表示身份证号无效。

在线身份证校验
测试: SELECT FUN_IS_IDENNO('610427197005053353') "是" ,FUN_IS_IDENNO('610424198505184124') "否" FROM DUAL;

CREATE OR REPLACE FUNCTION FUN_IS_IDENNO(p_idenno IN VARCHAR2)
RETURN VARCHAR2
ISv_result VARCHAR2(3) := 'NO';v_iden_length PLS_INTEGER;v_birthday VARCHAR2(8);v_year PLS_INTEGER;v_month PLS_INTEGER;v_day PLS_INTEGER;v_check_digit CHAR(1);v_check_sum PLS_INTEGER := 0;v_weights PLS_INTEGER := 0;v_multipliers CONSTANT SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);v_check_chars CONSTANT VARCHAR2(11) := '10X98765432';
BEGIN-- 获取身份证号码长度v_iden_length := LENGTH(p_idenno);-- 校验身份证长度是否为18位IF v_iden_length = 18 THEN-- 校验前17位是否为数字IF REGEXP_LIKE(SUBSTR(p_idenno, 1, 17), '^\d{17}$') THEN-- 校验出生日期是否合理v_birthday := SUBSTR(p_idenno, 7, 8);v_year := TO_NUMBER(SUBSTR(v_birthday, 1, 4));v_month := TO_NUMBER(SUBSTR(v_birthday, 5, 2));v_day := TO_NUMBER(SUBSTR(v_birthday, 7, 2));IF v_year BETWEEN 1900 AND EXTRACT(YEAR FROM SYSDATE) AND v_month BETWEEN 1 AND 12 THENIF (v_month = 2 AND v_day BETWEEN 1 AND 29 AND MOD(v_year, 4) = 0 AND (MOD(v_year, 100) <> 0 OR MOD(v_year, 400) = 0)) OR(v_month = 2 AND v_day BETWEEN 1 AND 28 AND (MOD(v_year, 4) <> 0 OR (MOD(v_year, 100) = 0 AND MOD(v_year, 400) <> 0))) OR(v_month IN (1, 3, 5, 7, 8, 10, 12) AND v_day BETWEEN 1 AND 31) OR(v_month IN (4, 6, 9, 11) AND v_day BETWEEN 1 AND 30) THEN-- 计算校验位FOR i IN 1..17 LOOPv_weights := TO_NUMBER(SUBSTR(p_idenno, i, 1)) * v_multipliers(i);v_check_sum := v_check_sum + v_weights;END LOOP;-- 获取计算出的校验位v_check_digit := SUBSTR(v_check_chars, MOD(v_check_sum, 11) + 1, 1);-- 校验第18位是否正确IF v_check_digit = SUBSTR(p_idenno, 18, 1) THENv_result := 'YES';END IF;END IF;END IF;END IF;END IF;RETURN v_result;
END FUN_IS_IDENNO;
/

相关文章:

oracle 11g写一个判断是否是身份证的函数,函数名称为:FUN_IS_IDENNO

下面是一个用于判断是否是身份证号码的Oracle 11g函数&#xff08;FUN_IS_IDENNO&#xff09;。身份证号码通常为18位&#xff08;或者旧的15位&#xff09;&#xff0c;前17位为数字&#xff0c;第18位为数字或字母X&#xff0c;并且需要符合一定的规则&#xff0c;例如出生日…...

如何使用Spring Cloud Gateway搭建网关系统

使用Spring Cloud Gateway搭建网关系统是一个涉及多个步骤的过程&#xff0c;主要包括创建Spring Boot项目、添加 Spring Cloud Gateway依赖、配置路由规则以及运行和测试网关。以下是详细的步骤&#xff1a;一、创建Spring Boot项目 选择工具&#xff1a; 可以使用Spring Ini…...

油烟机制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

油烟机制造5G智能工厂物联数字孪生平台&#xff0c;是智能制造与信息技术的深度融合产物。数字孪生工业互联平台通过部署在工厂各个环节的传感器和设备&#xff0c;实时采集、分析和处理生产过程中的海量数据&#xff0c;构建出高度逼真的数字孪生模型。这一模型不仅能够真实反…...

《拿下奇怪的前端报错》序章:报错输出个数值数组Buffer(475) [Uint8Array],我来教它说人话!

作为前端开发者&#xff0c;你可能会遇到过一些奇奇怪怪的报错&#xff08;相信我你早晚会遇到&#xff09;&#xff0c;关键是它未给出具体错误的位置&#xff0c;或者是一些很奇怪的信息。 我以前都是还原代码&#xff0c;然后找到错误的位置。或者是瞎弄一通&#xff0c;测试…...

Docker 里面按照ifconfig

1. 进入Docker 容器内部 docker exec -it xxx bash2. 安装 net-tools iputils-ping apt-get update && apt-get install -y net-tools apt-get update && apt-get install -y iputils-ping 3. 执行ifconfig 执行ping...

DOS(Disk Operating System,磁盘操作系统)常用指令

目录 背景: 早期探索: DOS之父&#xff1a; 发展历程&#xff1a; 常用指令&#xff1a; 进入命令&#xff1a; 操作1.进入和回退&#xff1a; 操作2.增、删&#xff1a; 操作3.其它&#xff1a; 总结: 背景: 早期探索: DOS(Disk Operating System,磁盘操作系统)在…...

VSCode集成Python环境搭建配置详细步骤

1. 安装VSCode 在开始我们的Python编程之旅前,首先需要准备好我们的开发工具——Visual Studio Code,简称VSCode。VSCode是一款由微软开发的轻量级但功能强大的源代码编辑器,支持多种编程语言,并且拥有丰富的扩展生态系统。接下来,我们将一步步教你如何下载、安装以及汉化…...

OpenHarmony(鸿蒙南向开发)——小型系统内核(LiteOS-A)【扩展组件】上

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 子系统开发内核 轻量系统内核&#xff08;LiteOS-M&#xff09; 轻量系统内核&#…...

Windows【环境 01】服务器系统重装后的服务恢复(ES\Redis\Jafka\Tomcat)环境变量和服务注册

服务器系统重装后的服务恢复 1.原因2.问题处理2.1 JDK2.2 Elasticsearch2.3 Redis2.4 Jafka2.5 Tomcat 3.总结 1.原因 Windows 服务器系统盘损坏&#xff0c;换了硬盘并重做了系统&#xff0c;其他磁盘未损坏但安装的服务无法正常运行了&#xff0c;包括&#xff1a; Elastic…...

发现编程的全新境界——明基RD280U显示器使用体验

前言 在大学的四年里&#xff0c;我几乎每天都泡在实验室&#xff0c;盯着电脑屏幕&#xff0c;一行行地码代码。那时&#xff0c;学校提供的显示器是非常基础的款式&#xff0c;功能简单&#xff0c;几乎没有任何特别之处&#xff0c;甚至配置也比较低。那个时候&#xff0c;…...

使用阿里OCR身份证识别

1、开通服务 免费试用 2、获取accesskay AccessKeyId和AccessKeySecret 要同时复制保存下来 因为后面好像看不AccessKeySecret了 3.Api 参考 https://help.aliyun.com/zh/ocr/developer-reference/api-ocr-api-2021-07-07-recognizeidcard?spma2c4g.11186623.0.0.7a9f4b1e5C…...

8. 详细描述一条 SQL 语句在 MySQL 中的执行过程。

一条SQL语句在MySQL中的执行过程包括多个步骤&#xff0c;从接收到SQL命令到返回结果&#xff0c;这些步骤涉及SQL解析、优化、执行以及最终的结果返回。以下是详细描述一条SQL语句在MySQL中的执行过程。 1. 客户端发送SQL请求 客户端应用程序&#xff1a;首先&#xff0c;客户…...

C++--类的实例化

一、实例化的概念 用类类型在屋里内存中创建对象的过程&#xff0c;称为类实例化出对象 类是对对象进行一种抽象描述&#xff0c;是一个模型一样的东西&#xff0c;限定了类有哪些成员变量&#xff0c;这些成员变量只是声明&#xff0c;没有分配空间&#xff0c;用类实例化出…...

Vue vs React vs Angular 的对比和选择

前端框架对比与选择指南 在前端开发的世界里&#xff0c;框架可谓是开发者手中的利器。无论是新手还是老手&#xff0c;面对 Vue、React、Angular 等主流前端框架的选择时&#xff0c;都会有一瞬间的犹豫&#xff1a;“我到底该选哪个框架&#xff1f;”选择一个合适的前端框架…...

Yolov8-pose关键点检测:一种新的自适应算法轻量级通道分割和变换(ALSS)模块,解决红外检测场景存在严重遮挡和重叠目标时的局限性

💡💡💡本文解决什么问题:红外检测场景存在严重遮挡和重叠目标时的局限性的问题点。 💡💡💡提出了一种新的自适应算法轻量级通道分割和变换(ALSS)模块。该模块采用自适应信道分裂策略优化特征提取,并集成信道变换机制增强信道间的信息交换。这改善了模糊特征的提…...

无人机飞手培训机构六旋翼训练无人机技术详解

六旋翼无人机作为多旋翼无人机的一种&#xff0c;以其独特的稳定性、灵活性和载重能力&#xff0c;在航拍、农业、救援、物流等多个领域展现出广泛的应用前景。它采用六个旋翼产生升力&#xff0c;通过复杂的飞行控制系统实现悬停、前后左右飞行、翻滚等复杂动作&#xff0c;为…...

CX8903:电动车手机充电器降压芯片,搭配协议实现快充

CX8903&#xff1a;一款专用于电动车手机充电器的降压芯片&#xff0c;搭配协议实现快充。 在城市的车水马龙中&#xff0c;电动自行车如灵动的精灵&#xff0c;便捷着我们的出行生活。在骑行的路上&#xff0c;随时保持连接&#xff0c;电动自行车手机充电器让手机电量满满。…...

leaflet加载GeoServer的WMS地图服务.md

leaflet加载GeoServer的WMS地图服务&#xff0c;该示例涵盖了涵盖了 “WMS图层加载、WMS图层动态投影、图层index顺序调整、图层添加、高德地图、腾讯地图OpenStreet地图”&#xff0c;WMS图层加载看代码中标注的核心代码部分即可。 <!DOCTYPE html> <html xmlns&qu…...

Shire 智能体市场:IDE 一键安装多智能体,协同打造集体智慧 Copilot

太长不看版&#xff1a;在新版本&#xff08;0.8&#xff09;的 Shire 中&#xff0c;你可以通过 Shire 智能体市场&#xff0c;一键下载和安装多个智能体&#xff0c;并直接在你的当前项目中使用。与此同时&#xff0c;你还可以 将你的 Shire 代码段或者智能体上传到 Shire 智…...

机器学习笔记(一)初识机器学习

1.定义 机器学习是一门多学科交叉专业&#xff0c;涵盖概率论知识&#xff0c;统计学知识&#xff0c;近似理论知识和复杂算法知识&#xff0c;使用计算机作为工具并致力于真实实时的模拟人类学习方式&#xff0c;并将现有内容进行知识结构划分来有效提高学习效率。 机器学习有…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

WEB3全栈开发——面试专业技能点P7前端与链上集成

一、Next.js技术栈 ✅ 概念介绍 Next.js 是一个基于 React 的 服务端渲染&#xff08;SSR&#xff09;与静态网站生成&#xff08;SSG&#xff09; 框架&#xff0c;由 Vercel 开发。它简化了构建生产级 React 应用的过程&#xff0c;并内置了很多特性&#xff1a; ✅ 文件系…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...

PydanticAI快速入门示例

参考链接&#xff1a;https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...