⑴ 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
select*fromtablewhereidcardlike'%1'
⑶ 如何用sql語言比對兩張表中是否有重復身份證號
select id
from table_name
group by id
having count(*)>1
select [業務_低保$].[序號], [業務_低保$].[姓名], [業務_低保$].[身份證號], [業務_低保$].[銀行卡號]
from [業務_低保$]
where [業務_低保$].[身份證號] in(
select [業務_低保$].[身份證號]
from [業務_低保$]
group by [業務_低保$].[身份證號]
功能
SQL具有數據定義、數據操縱和數據控制的功能。
1、SQL數據定義功能:能夠定義資料庫的三級模式結構,即外模式、全局模式和內模式結構。在SQL中,外模式又叫做視圖(View),全局模式簡稱模式(Schema),內模式由系統根據資料庫模式自動實現,一般無需用戶過問。
2、SQL數據操縱功能:包括對基本表和視圖的數據插入、刪除和修改,特別是具有很強的數據查詢功能。
⑷ sql中判斷身份證號碼的出生年月是否正確合法
好辦呀 oracle-sql
select substr(身份證號,7,8) from al;
這樣取出的就是出生年月日了
⑸ SQL中判斷身份證對與否
我曾寫過完整的身份證校驗過程,
但是是VB的和VB.net的,如果你要可能給你,如果你要SQL的,我就翻譯一下.
下面只校驗日期
函數如下
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE FUNCTION CheckSNID ( @snid nvarchar(20))
RETURNS bit AS
BEGIN
declare @b bit
set @b = 0
if len(@snid)<>15 and len(@snid)<>18
goto ext
if len(@snid)=15
set @snid = left(@snid,6) + '19'+ right(@snid,9)
declare @y nvarchar(4),@m nvarchar(2) ,@d nvarchar(2)
set @y = substring(@snid,7,4)
set @m = substring(@snid,11,2)
set @d = substring(@snid,13,2)
declare @x nvarchar(10)
set @x = @y +'-'+@m+'-'+@d
if isdate(@x) =1
set @b=1
ext:
return @b
END
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
select * from sb03 where dbo.CheckSNID (gr02) =1
⑹ 求SQL加入身份證號驗證第18位的方法
身份證號碼是每一個公民終身不變的號碼,不要查詢使用他人的身份號碼,請使用自己的身份號碼,否則會負法律責任。
⑺ sql sever 2008r2 中如何批量判斷身份證真假
--建議你做成一個自定義函數,然後再調用
--區域編碼的驗證,你得有csounty_sar這個表才行,所以下面的代碼,我去掉了這個
Declare@pspt_idVarchar(18)='52212019880722042X'
Select
case
/*判斷身份證號碼是否為18位*/
whenlen(@pspt_id)<>'18'then'身份證號碼位數不對'
/*判斷身份證號碼前17位是否含除數字外的字元*/
whenISNUMERIC(substring(@pspt_id,1,17))=0then'身份證號碼前17位格式不正確'
/*判斷身份證的年份是否在合理范圍內*/
whensubstring(@pspt_id,7,4)notbetween'1900'and'2014'then'身份證年份錯誤'
/*判斷身份證的月份是否在合理范圍內*/
whensubstring(@pspt_id,11,2)notbetween'01'and'12'then'身份證月份錯誤'
/*判斷身份證日期是否在合理范圍內*/
whenisdate(substring(@pspt_id,7,8))=0then'身份證日期錯誤'
/*判斷身份證號碼的第18位是否符合驗證規則*/
when
(
substring(@pspt_id,1,1)*7+
substring(@pspt_id,2,1)*9+
substring(@pspt_id,3,1)*10+
substring(@pspt_id,4,1)*5+
substring(@pspt_id,5,1)*8+
substring(@pspt_id,6,1)*4+
substring(@pspt_id,7,1)*2+
substring(@pspt_id,8,1)*1+
substring(@pspt_id,9,1)*6+
substring(@pspt_id,10,1)*3+
substring(@pspt_id,11,1)*7+
substring(@pspt_id,12,1)*9+
substring(@pspt_id,13,1)*10+
substring(@pspt_id,14,1)*5+
substring(@pspt_id,15,1)*8+
substring(@pspt_id,16,1)*4+
substring(@pspt_id,17,1)*2
)%11
<>
(
case
whensubstring(@pspt_id,18,1)='1'then'0'
whensubstring(@pspt_id,18,1)='0'then'1'
whensubstring(@pspt_id,18,1)in('X','x')then'2'
whensubstring(@pspt_id,18,1)='9'then'3'
whensubstring(@pspt_id,18,1)='8'then'4'
whensubstring(@pspt_id,18,1)='7'then'5'
whensubstring(@pspt_id,18,1)='6'then'6'
whensubstring(@pspt_id,18,1)='5'then'7'
whensubstring(@pspt_id,18,1)='4'then'8'
whensubstring(@pspt_id,18,1)='3'then'9'
whensubstring(@pspt_id,18,1)='2'then'10'
end
)
then'身份證驗證錯誤'Else'正確'EndAs結果
⑻ SQL函數驗證身份證號碼是否有效
SQL函數驗證身份證號碼是否有效
比如身份證號在C列,D2:
=IF(MID("10X98765432",MOD(SUM(MID(C2,{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17},1)*2^(18-{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17})),11)+1,1)=RIGHT(C2),"身份證正確","身份證錯誤")
數組公式,按CTRL+SHIFT+回車結束,下拉。
⑼ SQL中檢查身份證是否正確
select 欄位1, 欄位2
from t
where 欄位=『身份證號』;
有就是真的,沒有就是假的啊!只不過具體問題具體分析
⑽ SQL 中身份證編碼與出生日期驗證
根據身份證號驗證出生日期:
alter table 你的表--修改表
/*添加約束 要麼刪掉你之前的生日約束 要麼把
約束開始到結束復制到你的約束里再改*/
add constraint CK_生日 check(
--約束開始
convert(datetime,replace(stuff(stuff(right (left(char之類類型的18位的身份證號,14),8),5,0,'-'),8,0,'-'),'0',''))=生日欄位
--約束結束
)
最後只要把中文替換掉就可以了