電話號碼限制爲7位數。如何檢查它是否是SQL Server中的7位數字?SQL Server中電話號碼的約束條件
CREATE TABLE Customer
(
C_ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
C_Name VARCHAR(255) NOT NULL,
Phone INT
);
電話號碼限制爲7位數。如何檢查它是否是SQL Server中的7位數字?SQL Server中電話號碼的約束條件
CREATE TABLE Customer
(
C_ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
C_Name VARCHAR(255) NOT NULL,
Phone INT
);
不要爲整數沒有存儲電話號碼的工作。例如,一些有效的數字可以從0開始 - 如果不是今天,也許在將來。要做到驗證檢查,您可以使用like
:
CREATE TABLE Customer (
C_ID INT NOT NULL IDENTITY(1, 1) PRIMARY KEY,
C_Name VARCHAR(255) NOT NULL,
Phone CHAR(7), -- you might not want to have such a precise length
CONSTRAINT chk_phone CHECK (phone not like '%[^0-9]%') -- check that no number is not a digit
);
或者,你可以寫:
CONSTRAINT chk_phone CHECK (phone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]') -- check that no number is not a digit
它與電話VARCHAR CHECK(DATALENGTH(電話)= 7)
你最好多存的電話號碼爲VARCHAR2或字符類型。在Oracle中,你可以通過檢查的電話號碼驗證的正則表達式:
CREATE TABLE Customer
(
C_ID INT NOT NULL PRIMARY KEY,
C_Name VARCHAR(255) NOT NULL,
Phone char(10),
CONSTRAINT valid_phone_number
CHECK (REGEXP_LIKE(p_number, '^0\d{9}|\d{10}$'))
);
'^ 0 \ d {9} | \ d {10} $'指電話號碼必須從數字0開始,然後是9或10位數字(即01646947314(11位數字)或(10位數字)有效,123456789或無效)。您可以通過刪除「|」將此代碼修改爲7位數字在正則表達式中並更改爲d {7}。 希望這可以幫助你(或別人有類似的問題)!
您不需要將電話號碼存儲爲整數。你永遠不會在電話號碼上做數學運算。將它們存儲爲varchar。您可以輕鬆地添加一個約束來檢查LEN = 7,並且值不像'^ [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0- 9]' –
嘗試使用存儲更多長度的錯誤的十進制(7,0) –
它與Phone VARCHAR CHECK(DATALENGTH(Phone)= 7)一起使用 –