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

sql校驗18位身份證號

發布時間: 2023-08-28 00:57:43

『壹』 如何用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

『貳』 SQL資料庫約束身份證只能輸入15或者18位

createtable身份證
(身份證號varchar(18)check(len(身份證號)in(15,18)))

用以下幾個語句你驗證下就可以了

insertinto身份證values('123456789012345')
insertinto身份證values('123456789012345678')
insertinto身份證values('1234567890')

『叄』 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 中身份證編碼與出生日期驗證

根據身份證號驗證出生日期:

alter table 你的表--修改表
/*添加約束 要麼刪掉你之前的生日約束 要麼把
約束開始到結束復制到你的約束里再改*/
add constraint CK_生日 check(

--約束開始
convert(datetime,replace(stuff(stuff(right (left(char之類類型的18位的身份證號,14),8),5,0,'-'),8,0,'-'),'0',''))=生日欄位
--約束結束

)

最後只要把中文替換掉就可以了

『伍』 用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查詢 身份證判斷男女

上面給的答案是錯的,這個語句在身份證15位是可以用的,但是二代身份證是執行不下去的,正確的是:SELECT case when (left(right([買受人身份證號碼],2),1) % 2 = 0) then '女' else '男' end AS 性別1 from [表名]
若果是更新已有性別欄位,但是需要從身份證中提取男女的,用下面sql語句:
update [表名] set [性別]=(case when (left(right([買受人身份證號碼],2),1) % 2 = 0) then '女' else '男' end )
where len([身份證])=18 and left(right([身份證],2),1)<>'X'
注意後面的判別條件<>'X'針對的可能是錯誤的18位身份證號嗎需要剔除,否則執行不下去。

『柒』 sql中判斷身份證號碼的出生年月是否正確合法

好辦呀 oracle-sql
select substr(身份證號,7,8) from al;

這樣取出的就是出生年月日了

『捌』 sql 根據15位或18位身份證號返回出生日期,如果日期不合法,顯示"錯誤的身份證

15位的身份證是7-12位為日期 900124 就是1990 01 24
18位的身份證是7-14位為日期 19900124
身份證號碼 Declare @No varchar(30)
select case when len(@No)=15 then '19'+substring(@No,7,6) when len(@No)=18 then substring(@No,7,8) end