當前位置:首頁 » 編程語言 » sql計算身份證號位數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql計算身份證號位數

發布時間: 2023-06-07 16:46:22

㈠ 我要用sql語句為用約束或規則保證身份證號碼為18位,怎麼實現啊

在create table的時候,加上約束。這樣子在 往這個表插入數據的時候,就會驗證,如果不是18位,是會報錯的。

CREATE TABLE test(
pid VARCHAR2(18) check (length(PID) = 18)
)

㈡ sql 語句 驗證身份證號碼

幫你搜了一下,參考參考。

主要驗證SQL資料庫中已輸入的15位 及18位 身份證號碼的位數、出生年月日是否正確,
可以過濾出大部分的輸入錯誤。

or (len(身份證號)=18 and (Substring(身份證號,7,2)<'19' or Substring(身份證號,7,2)>'20'
or (Substring(身份證號,11,2)>12)
or (Substring(身份證號,11,2) in (01,03,05,07,08,10,12) and Substring(身份證號,13,2)>31)
or (Substring(身份證號,11,2) in (04,06,09,11) and Substring(身份證號,13,2)>30)
or (Substring(身份證號,11,2)=02 and Substring(身份證號,13,2)>29)))
---------------------- 下面是針對 15位 及18位 身份證號碼性別的驗證語句 ------------------

-- Access 不支持 Substring 查詢,可以替換為 mid 查詢。
select 序號,姓名,身份證號,性別
from 身份表
where (((len(身份證號)=15) and (Substring(身份證號,15,1) in (1,3,5,7,9)) and 性別<>'男')
or ((len(身份證號)=15) and (Substring(身份證號,15,1) in (2,4,6,8,0)) and 性別<>'女'))
or (((len(身份證號)=18) and (Substring(身份證號,17,1) in (1,3,5,7,9)) and 性別<>'男')
or ((len(身份證號)=18) and (Substring(身份證號,17,1) in (2,4,6,8,0)) and 性別<>'女'))

---------------------- 下面是針對 15位 及18位 身份證號碼位數與出生年月日的驗證 ------------------

-- Access 不支持 Substring 查詢,可以替換為 mid 查詢。

select 序號,姓名,身份證號,性別
from 身份表
where (len(身份證號)<>15 and len(身份證號)<>18)
or (len(身份證號)=15 and ((Substring(身份證號,9,2)>12)
or (Substring(身份證號,11,2) > 31)
or (Substring(身份證號,9,2) in (01,03,05,07,08,10,12) and Substring(身份證號,11,2)>31)
or (Substring(身份證號,9,2) in (04,06,09,11) and Substring(身份證號,11,2)>30)
or (Substring(身份證號,9,2)=02 and Substring(身份證號,11,2)>29)))

㈢ sql 查詢語句,關於某個欄位位數判斷。

1、首先我們准備一個數據表。

㈣ 用SQL函數判斷是否有效18位身份證號

判斷是不是18位
if (len(@snid)<> 18) or (isnull(@snid,'')='')
goto ext
第七位、第八位不是19 或者 20
if not ((substring(@snid,7,2)='19') or (substring(@snid,7,2)='20'))
goto ext
判斷前17位是否都是數字
select @i=1,@id_num='',@sn_sum=0,@sn_Last=''
while @i<18
begin

㈤ 如何用SQL語言寫一個觸發器,實現身份證號碼位數的判斷。

CREATE TRIGGER mod_test ON dbo.tablename
FOR UPDATE
AS
declare @errno int, @errmsg varchar(255)

if (select len(身份證) from inserted) not in (0,18)
begin
select @errno = 50001, @errmsg = '身份證號碼不等於18位,請檢查!! '
goto error
end
return
error:
raiserror @errno @errmsg
rollback transaction