`
floger
  • 浏览: 213279 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

sql强人使用数据库计算身份证算法

阅读更多
一、
--SQL SERVER 15位身份证号转18位身份证

CREATE FUNCTION ID15TO18 (@id15 char(15)) 
RETURNS CHAR(18) AS 
BEGIN 
    DECLARE @ID18 CHAR(18),@S18 bigint
    
    SET @S18 = ( (SUBSTRING(@ID15,1,1)*7) + (SUBSTRING(@ID15,2,1)*9) + (SUBSTRING(@ID15,3,1)*10) 
       + (SUBSTRING(@ID15,4,1)*5) + (SUBSTRING(@ID15,5,1)*8) + (SUBSTRING(@ID15,6,1)*4) + (1*2) + (9*1) 
       + (SUBSTRING(@ID15,7,1)*6) + (SUBSTRING(@ID15,8,1)*3) + (SUBSTRING(@ID15,9,1)*7) 
       + (SUBSTRING(@ID15,10,1)*9)+ (SUBSTRING(@ID15,11,1)*10)+ (SUBSTRING(@ID15,12,1)*5) 
       + (SUBSTRING(@ID15,13,1)*8) +(SUBSTRING(@ID15,14,1)*4) + (SUBSTRING(@ID15,15,1)*2) ) % 11
    
    SET @ID18 = SUBSTRING(@ID15,1,6) + '19' + SUBSTRING(@ID15,7,9) + 
        CASE 
            WHEN @S18 = 0 THEN '1'
            WHEN @S18 = 1 THEN '0'
            WHEN @S18 = 2 THEN 'X'
            WHEN @S18 = 3 THEN '9'
            WHEN @S18 = 4 THEN '8'
            WHEN @S18 = 5 THEN '7'
            WHEN @S18 = 6 THEN '6'
            WHEN @S18 = 7 THEN '5'
            WHEN @S18 = 8 THEN '4'
            WHEN @S18 = 9 THEN '3'
            WHEN @S18 = 10 THEN '2'
        END
    
    RETURN @ID18
END


GO


SELECT DBO.ID15TO18('????????????????')

DROP FUNCTION ID15TO18

 二、

C# code 
-- 18位身份证号转15位身份证

CREATE FUNCTION ID18TO15 (@id18 char(18)) 
RETURNS CHAR(15) AS 
BEGIN 
    DECLARE @ID15 CHAR(15)
    
    SET @ID15 = SUBSTRING(@id18,1,6) + SUBSTRING(@id18,9,9)
    
    RETURN @ID15
END


GO


SELECT DBO.ID18TO15('3210*****605026619')

DROP FUNCTION ID18TO15

 

三、

--===================================================================
--15位号码升级为18位
--===================================================================
Create FUNCTION [dbo].[ID15TO18] (@id15 char(15)) 
/*功能:将身份证的15位号码升级为18位

 
-- 
-- --调用函数
-- update 
--     表
-- set 
--     身份证号 = dbo.ID15TO18(身份证号)
-- where
--     LEN(身份证号) = 15
-- 
-- 
*/
RETURNS CHAR(18)
AS 
BEGIN 
    DECLARE @ID18 CHAR(18)
   
    DECLARE @S1 AS INTEGER
    DECLARE @S2 AS INTEGER
    DECLARE @S3 AS INTEGER
    DECLARE @S4 AS INTEGER
    DECLARE @S5 AS INTEGER
    DECLARE @S6 AS INTEGER
    DECLARE @S7 AS INTEGER
    DECLARE @S8 AS INTEGER
    DECLARE @S9 AS INTEGER
    DECLARE @S10 AS INTEGER
    DECLARE @S11 AS INTEGER
    DECLARE @S12 AS INTEGER
    DECLARE @S13 AS INTEGER
    DECLARE @S14 AS INTEGER
    DECLARE @S15 AS INTEGER
    DECLARE @S16 AS INTEGER
    DECLARE @S17 AS INTEGER
    DECLARE @S18 AS INTEGER
   
    SET @S1=SUBSTRING(@ID15,1,1)
    SET @S2=SUBSTRING(@ID15,2,1)
    SET @S3=SUBSTRING(@ID15,3,1)
    SET @S4=SUBSTRING(@ID15,4,1)
    SET @S5=SUBSTRING(@ID15,5,1)
    SET @S6=SUBSTRING(@ID15,6,1)
    SET @S7=1
    SET @S8=9
    SET @S9=SUBSTRING(@ID15,7,1)
    SET @S10=SUBSTRING(@ID15,8,1)
    SET @S11=SUBSTRING(@ID15,9,1)
    SET @S12=SUBSTRING(@ID15,10,1)
    SET @S13=SUBSTRING(@ID15,11,1)
    SET @S14=SUBSTRING(@ID15,12,1)
    SET @S15=SUBSTRING(@ID15,13,1)
    SET @S16=SUBSTRING(@ID15,14,1)
    SET @S17=SUBSTRING(@ID15,15,1)
   
    SET @S18=((@S1*7)+(@S2*9)+(@S3*10)+(@S4*5)+(@S5*8)+(@S6*4)+(@S7*2)+(@S8*1)
        +(@S9*6)+(@S10*3)+(@S11*7)+(@S12*9)+(@S13*10)+(@S14*5)+(@S15*8)+(@S16
        *4)+(@S17*2))%11
   
    SET @ID18=SUBSTRING(@ID15,1,6)+'19'+SUBSTRING(@ID15,7,9)
        +CASE WHEN @S18=0 THEN '1'
              WHEN @S18=1 THEN '0'
              WHEN @S18=2 THEN 'X'
              WHEN @S18=3 THEN '9'
              WHEN @S18=4 THEN '8'
              WHEN @S18=5 THEN '7'
              WHEN @S18=6 THEN '6'
              WHEN @S18=7 THEN '5'
              WHEN @S18=8 THEN '4'
              WHEN @S18=9 THEN '3'
              WHEN @S18=10 THEN '2'
         END
   
    RETURN @ID18
END 

 

 

 

分享到:
评论

相关推荐

    sql语句 根据身份证号计算年龄

    sql 语句 根据身份证号计算年龄,oracl数据库可以直接运行

    全国身份证地域数据库 (sql语句包)

    总结来说,全国身份证地域数据库是一个包含中国所有县市级别身份证号码信息的重要资源,通过SQL语句可以高效地进行数据操作,对于开发、数据分析以及各类业务应用具有极高的价值。掌握并运用好这个数据库,可以帮助...

    sql2000附加数据库错误602解决方式

    在使用SQL Server 2000进行数据库附加操作时,可能会遇到错误602的问题:“Could not find row in sysindexes for database ID 13, object ID 1, index ID 1. Run DBCC CHECKTABLE on sysindexes.” 这一错误通常...

    《数据挖掘原理与应用——SQL Server 2005 数据库》算法案例

    《数据挖掘原理与应用——SQL Server 2005 数据库》是一本深入探讨数据挖掘技术的书籍,其中包含了丰富的算法实例,旨在帮助读者理解并掌握如何在SQL Server 2005环境下进行数据挖掘实践。数据挖掘是利用统计学、...

    MYSQL数据库校验身份证函数

    ### MySQL数据库校验身份证函数详解 #### 一、引言 在进行用户信息验证时,身份证号的有效性检查是一项常见的需求。特别是在中国,一个合法有效的身份证号码必须符合一定的格式规范和逻辑规则。本文将深入解析...

    学习基于SQL数据库的算法

    【SQL数据库算法应用】 在计算机领域,算法是解决复杂问题的核心工具,而在SQL数据库中,算法的运用至关重要,尤其在面对大规模数据和复杂业务逻辑时。数据库不仅用于存储数据,还执行大量的计算任务,包括数据的...

    C++使用ADO连接SQL Server数据库源代码

    以下将详细讲解如何使用C++通过ADO连接到SQL Server数据库,并基于提供的"ConnDatabase"源代码进行学习。 1. ADO简介:ADO是微软的组件对象模型(COM)接口,它提供了一种简单的方式来访问各种数据源,包括SQL ...

    Javaweb基于遗传算法的物流管理系统源码+sql数据库.zip

    Javaweb基于遗传算法的物流管理系统源码+sql数据库.zipJavaweb基于遗传算法的物流管理系统源码+sql数据库.zipJavaweb基于遗传算法的物流管理系统源码+sql数据库.zipJavaweb基于遗传算法的物流管理系统源码+sql数据库...

    SQL Server 2008数据库设计与实现

    《SQL Server 2008数据库设计与实现》是关系型数据库设计与开发方面的一本经典著作,由资深数据库专家撰写,旨在向读者介绍世界上最受欢迎的数据库管理系统之一——SQL Server 2008。全书分为三个部分,从基础概念到...

    身份证号对应地区数据库.sql

    列举所有证件号码段对应的省份、城市、区镇。 通过insert into插入表格。 如 insert into card_info(provinceID,cityID,regionID,province,city,region) values(13,1305,130524,河北省,邢台市,柏乡县). ...

    利用MysqlODBC把Sqlserver数据库导入到Mysql中

    将mysql数据库转换为sql server的数据库,或者将sql server数据库转换...这里介绍一个使用sql的mmc的方法 ,将sql server的数据转化为mysql的数据库,将源和目的反之,就可以将mysql的数据库转化为sql server的数据库。

    SQL15位和18位公民身份证校验函数

    - **校验码验证**:使用上述提到的算法来计算校验码,然后与身份证号码中的校验码进行比较,如果一致则返回1,否则返回0。 #### 五、注意事项 1. **输入数据有效性**:确保输入的数据符合15位或18位身份证号码的...

    SQL2000 2005 批量附加数据库工具

    SQL2000和SQL2005批量附加数据库工具是一款高效实用的软件,专为管理和维护Microsoft SQL Server 2000及2005数据库设计。它提供了一个便捷的方式来一次性附加多个数据库,极大地提高了数据库管理员的工作效率,特别...

    怎么使用C语言连接SQL数据库

    ### 如何使用C语言连接SQL数据库 在计算机编程领域中,使用C语言连接SQL数据库是一项基本而重要的技能,尤其对于初级和中级学习者而言。本文将详细介绍如何利用C语言进行数据库连接与简单查询操作,帮助读者更好地...

    使用SQL实现的冒泡排序算法 mysql数据库

    在MySQL数据库中,通常我们不直接使用SQL来执行排序算法如冒泡排序,因为SQL是设计用来查询和操作数据的,而不是执行通用的计算或算法任务。然而,为了教学目的,我们可以尝试模拟冒泡排序的过程,但请注意这种方法...

    sqlserver 数据库设计模板

    数据库设计是IT领域中的核心部分,特别是在关系型数据库如SQL Server中,良好的设计能确保系统的高效性和数据的一致性。以下是对"sqlserver 数据库设计模板"的详细说明: 1. **引言** - **编写目的**:设计模板...

    查看SQLServer数据库每个表占用的空间大小.sql

    快捷方便,可查看sqlserver数据库每个表的使用情况,一次下载终身使用,此文件为sql语句格式,免费试用

    SQL Server数据库备份与恢复(C#代码示例)

    1. 连接数据库:使用SqlConnection类建立到SQL Server实例的连接。 2. 构建备份命令:创建SqlCommand对象,并设置其CommandText属性为SQL备份语句,例如`BACKUP DATABASE [DatabaseName] TO DISK = 'BackupFilePath'...

    sqlserver2008数据库驱动jar包

    在Java应用程序中使用SQL Server 2008数据库驱动jar包,首先需要将对应的jar文件(如`mssql-jdbc.jar`或`sqljdbc4.jar`)添加到项目的类路径中。这样,Java虚拟机在运行时就能找到并加载驱动,从而建立与SQL Server...

    c# winform 实现 登陆界面 连接sqlserver2005数据库

    C#中可以使用ADO.NET库来连接SQL Server数据库。首先,需要引入`System.Data.SqlClient`命名空间。然后,通过`SqlConnection`类创建数据库连接字符串,它通常包含服务器名、数据库名、用户名和密码。例如: ```...

Global site tag (gtag.js) - Google Analytics