當前位置:首頁 » 編程語言 » 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',''))=生日欄位
--約束結束

)

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

熱點內容
java中io流 發布:2025-01-25 09:02:54 瀏覽:877
華為高斯資料庫 發布:2025-01-25 08:55:38 瀏覽:30
php是動態語言 發布:2025-01-25 08:45:44 瀏覽:66
伺服器關閉了電腦網路還能用 發布:2025-01-25 08:22:28 瀏覽:587
熱血航線的登錄密碼在哪裡可以看 發布:2025-01-25 08:22:27 瀏覽:769
5系怎麼選擇配置 發布:2025-01-25 08:22:18 瀏覽:842
pythonscipy 發布:2025-01-25 08:18:52 瀏覽:418
恕瑞瑪伺服器地址 發布:2025-01-25 08:18:51 瀏覽:801
oa源碼php 發布:2025-01-25 08:11:31 瀏覽:734
gpc腳本 發布:2025-01-25 08:10:47 瀏覽:317