【实例】校验18位身份证号码的PowerQuery代码

标记不足18位的身份证号 = Table.AddColumn(去除空格, "标记不足18位的身份证号", each if Text.Length([去除空格])<>18 then "Renew" else [去除空格]),//标记出18位的身份证号码,如果不是18位的,需要更新(Renew)

计算余数 = Table.AddColumn(标记不足18位的身份证号, "计算余数", each if [标记不足18位的身份证号]="Renew" then "Renew" else Number.Mod((Number.FromText(Text.At([去除空格],0))*7+Number.FromText(Text.At([去除空格],1))*9

+Number.FromText(Text.At([去除空格],2))*10+Number.FromText(Text.At([去除空格],3))*5+Number.FromText(Text.At([去除空格],4))*8+Number.FromText(Text.At([去除空格],5))*4+Number.FromText(Text.At([去除空格],6))*2

+Number.FromText(Text.At([去除空格],7))*1+Number.FromText(Text.At([去除空格],8))*6+Number.FromText(Text.At([去除空格],9))*3+Number.FromText(Text.At([去除空格],10))*7+Number.FromText(Text.At([去除空格],11))*9

+Number.FromText(Text.At([去除空格],12))*10+Number.FromText(Text.At([去除空格],13))*5+Number.FromText(Text.At([去除空格],14))*8+Number.FromText(Text.At([去除空格],15))*4+Number.FromText(Text.At([去除空格],16))*2),11)),

校验码 = Table.AddColumn(计算余数, "校验码", each if [计算余数]="Renew" then "Renew" else if [计算余数]=0 then 1 else if [计算余数]=1 then 0 else if [计算余数]=2 then "X" else if [计算余数]=3 then 9

else if [计算余数]=4 then 8 else if [计算余数]=5 then 7 else if [计算余数]=6 then 6 else if [计算余数]=7 then 5 else if [计算余数]=8 then 4 else if [计算余数]=9 then 3 else 2),

更改的类型1 = Table.TransformColumnTypes(校验码,{{"校验码", type text}}),

比对校验码 = Table.AddColumn(更改的类型1, "比对校验码", each if[校验码]="Renew" then "Renew" else if Text.Upper(Text.At([去除空格],17))=[校验码] then "Y" else "Renew"),//不能通过校验的身份证号码标记为需更新(Renew)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,350评论 0 33
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,728评论 0 17
  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 13,457评论 0 23
  • 什么是宽容? 看过很多宽容的故事,“林肯被当众羞辱是鞋匠的儿子,林肯从容应对”,“儿子被歹徒射杀,最后亡者的父母宽...
    风喜阅读 2,405评论 0 0
  • 《天香引·西湖感旧》原诗、注释、翻译、赏析 【原文】:【双调】天香引·西湖感旧汤式问西湖昔日如何?朝也笙歌,暮也笙...
    xcy无名阅读 2,773评论 0 0