2016-03-16 2648 views
0

電話號碼限制爲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

您不需要將電話號碼存儲爲整數。你永遠不會在電話號碼上做數學運算。將它們存儲爲varchar。您可以輕鬆地添加一個約束來檢查LEN = 7,並且值不像'^ [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0- 9]' –

+0

嘗試使用存儲更多長度的錯誤的十進制(7,0) –

+0

它與Phone VARCHAR CHECK(DATALENGTH(Phone)= 7)一起使用 –

回答

2

不要爲整數沒有存儲電話號碼的工作。例如,一些有效的數字可以從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 
0

它與電話VARCHAR CHECK(DATALENGTH(電話)= 7)

0

你最好多存的電話號碼爲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}。 希望這可以幫助你(或別人有類似的問題)!