美文网首页
2018-09-13 sql实战

2018-09-13 sql实战

作者: Xmaxdev | 来源:发表于2018-09-13 20:51 被阅读0次

    结合所学sql语句完成身份证解码

    首先我们用到的是 case when sql的判断语法,提取出id_card 字段(身份证加密状态),

    之后我们判断身份证长度是否大于15位,

    如果是大于执行,第一个语句,首先把身份证拆开分为三段,用sql的replace()函数去替换a、b、c三个字母换成3/6/9,第二段同理,得出的结果需要减去一串数字,第三段和第一段解码逻辑一样(截取用sql的substr()函数),这是长度超过15位的解码逻辑,如果没超过就是else

    CASE WHEN LENGTH(id_card)>15

    THEN

    CONCAT(replace(replace(replace(substr(id_card, 1, 6),'a','3'),'b','6'),'c','9'),replace(replace(replace(substr(id_card, 7, 8),'a','3'),'b','6'),'c','9')-20170719,replace(replace(replace(substr(id_card, 15,4),'a','3'),'b','6'),'c','9'))

    ELSE

    CONCAT(replace(replace(replace(substr(id_card, 1, 6),'a','3'),'b','6'),'c','9'),replace(replace(replace(substr(id_card, 7, 6),'a','3'),'b','6'),'c','9')-20170719,replace(replace(replace(substr(id_card, 13,2),'a','3'),'b','6'),'c','9'))

    END

    相关文章

      网友评论

          本文标题:2018-09-13 sql实战

          本文链接:https://www.haomeiwen.com/subject/lsmggftx.html