yjywudi 2023-03-15 17:36 采纳率: 66.7%
浏览 65
已结题

在mysql中判断身份证号是否符合规范

请教下在mysql中判断身份证号是否符合规范,并输出不符合规范的行,应该怎么写?如同在EXCEL中的判断公式:

img

类似这个效果,请指导

  • 写回答

4条回答 默认 最新

  • CL有毒 2023-03-15 18:53
    关注
    -- 建表
    CREATE TABLE `test_id` ( `id` VARCHAR ( 18 ) NOT NULL, PRIMARY KEY ( `id` ) ); 
    -- 初始化数据
    INSERT INTO `test_id` VALUES ( '123456789123456789' ),( '432831196411150810' );
    -- 检查是否通过
    SELECT
        id,
        check_sum,
    IF
        ( MID( id, 18, 1 )= check_sum, '通过', '不通过' ) result 
    FROM
        (
        SELECT
            id,
        CASE
                mod_sum 
                WHEN 0 THEN
                '1' 
                WHEN 1 THEN
                '0' 
                WHEN 2 THEN
                'X' ELSE 12-mod_sum 
            END check_sum 
    FROM
        (
        SELECT
            id,
            MOD (
                MID( id, 1, 1 )* 7 + MID( id, 2, 1 )* 9 + MID( id, 3, 1 )* 10 + MID( id, 4, 1 )* 5 + MID( id, 5, 1 )* 8 + MID( id, 6, 1 )* 4 + MID( id, 7, 1 )* 2 + MID( id, 8, 1 )* 1 + MID( id, 9, 1 )* 6 + MID( id, 10, 1 )* 3 + MID( id, 11, 1 )* 7 + MID( id, 12, 1 )* 9 + MID( id, 13, 1 )* 10 + MID( id, 14, 1 )* 5 + MID( id, 15, 1 )* 8 + MID( id, 16, 1 )* 4 + MID( id, 17, 1 )* 2,
                11 
            ) AS mod_sum 
        FROM
            test_id 
        ) temp 
        ) t;
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月24日
  • 已采纳回答 3月16日
  • 创建了问题 3月15日