18位身份证如何转成15位 SQL语句

2020-09-14 社会 257阅读
/*
最后一位较验码,公式如下:
∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 ) (1)
"*" 表示乘号
i--------表示身份证号码每一位的序号,从右至左,最左侧为18,最右侧为1。
a[i]-----表示身份证号码第 i 位上的号码
W[i]-----表示第 i 位上的权值 W[i] = 2^(i-1) mod 11
计算公式 (1) 令结果为 R
根据下表找出 R 对应的校验码即为要求身份证号码的校验码C。
R 0 1 2 3 4 5 6 7 8 9 10
C 1 0 X 9 8 7 6 5 4 3 2
*/
string tmpCode = (sfzCode.Length == 15 ? sfzCode.Substring(0, 6) + "19" + sfzCode.Substring(6) : sfzCode);
string[] aryCheck = new string[] { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" };
int[] aryWeight = new int[] { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
int sum = 0;
for (int i = 0; i < 17; i++)
sum += aryWeight[i] * Convert.ToInt32(tmpCode.Substring(i, 1));
rst.CheckVal = aryCheck[sum % 11];
如果一定要用SQL
那么将这段代码用SQL的自定义函数实现下
然后再语句中使用就可以了
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com