1. 程式人生 > >一句sql搞定身份證校驗位

一句sql搞定身份證校驗位

事情 to_char sql語句 length 身份證校驗位 校驗位 char 技術 語句

身份證校驗位規則也不是什麽保密的事情,網上很多其他語言的校驗位計算,sql的比較少,這裏寫一個oracle的sql語句,輸入證件號的前17位,可算出最後一位。

主要技術是connect by level,這種方法也適合其他類型的校驗位計算。

with t as
(select mod(sum(substr(id, level, 1) * mod(power(2, 18 - level), 11)), 11) value
from (select &1 id from dual)
connect by level <= length(id))
select case t.value

when 1 then
‘0‘
when 0 then
‘1‘
when 2 then
‘X‘
else
to_char(12 - t.value)
end
from t;

一句sql搞定身份證校驗位