當前位置:首頁 » 編程語言 » sql身份證約束

sql身份證約束

發布時間: 2023-11-29 08:15:05

A. 建立sql資料庫,其中有個身份證的欄位,該用什麼數據類型。

設計用戶表時,身份證號為固定18位長,對該欄位最好採用char數據類型。

char類型對英文字元佔用1個位元組,對一個漢字佔用2個位元組,而且char存儲定長數據很方便,char欄位上的索引效率極高。

比如:定義char(10),那麼不論你存儲的數據是否達到了10個位元組,都要佔去10個位元組的空間,不夠的字元用空格去填。因為是固定長度,所以速度效率高。



(1)sql身份證約束擴展閱讀

char與varchar的比較:

1、數據存儲開銷

每個varchar列需要額外的兩個位元組,用於反映存儲的數據的長度。

每個可為NULL的char列,需要一些位元組(空點陣圖)來反應數據的為空性。無論實際數據的長度是多少,char按照定義的長度分配存儲空間。

2、NULL值

char列的NULL值佔用存儲空間,varcahr列的NULL值不佔用存儲空間。插入同樣數量的NULL值,varchar列的插入效率明顯高出char列。

3、插入數據

無論插入數據涉及的列是否建立索引,char的效率都明顯低於varchar。

4、更新數據

如果更新的列上未建立索引,則char的效率低於varchar,差異不大;建立索引的話,效率差異較大。

5、修改結構

對於增加列的寬度而言,char與varchar有非常明顯的效率差異,修改varcahr列基本上不花費時間,而修改char列需要花費很長的時間。

6、數據檢索

無論是否通過索引,varchar類型的數據檢索略優於char的掃描。

B. SQL 中身份證編碼與出生日期驗證

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

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

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

)

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

熱點內容
ae緩存文件夾 發布:2025-03-02 00:12:21 瀏覽:591
720p存儲 發布:2025-03-02 00:07:25 瀏覽:961
ie緩存多大 發布:2025-03-01 23:52:58 瀏覽:880
python追加寫入文件 發布:2025-03-01 23:33:09 瀏覽:71
我的世界趣味伺服器生存 發布:2025-03-01 23:27:21 瀏覽:89
java事件驅動 發布:2025-03-01 23:26:31 瀏覽:786
實驗三線性表的鏈式存儲結構 發布:2025-03-01 23:25:40 瀏覽:815
松翰單片機編譯器 發布:2025-03-01 23:25:35 瀏覽:383
dos加密命令 發布:2025-03-01 23:23:21 瀏覽:62
安卓電源介面哪個是音頻 發布:2025-03-01 23:21:42 瀏覽:197