9

我應該使用哪種數據類型來存儲10位數字的手機號碼(例如:9932234242)。我應該爲varchar(10)還是爲大 - 「bigint」。使用哪種數據類型來存儲手機號碼

如果數字的類型是'0021-23141231',那麼使用哪種數據類型?

回答

12
  • VARCHAR /焦炭足夠長的時間對所有預期的(例如英國的電話號碼是11長)
  • 檢查約束只允許數字(表達式= NOT LIKE '%[^0-9]%'
  • 在每區域客戶端(UK = 07123 456 789格式,瑞士= 071 234 56 78
+0

+1格式在客戶端! :) – codingbadger 2011-06-01 07:37:57

3

使用帶檢查約束的varchar以確保只允許使用數字。

事情是這樣的:

create table MyTable 
(
    PhoneNumber varchar(10) 
     constraint CK_MyTable_PhoneNumber check (PhoneNumber like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]') 
) 

如果它始終是你可能想使用char,而不是相同的長度。

+0

你的檢查約束只允許10個數字,所以你不妨使用char。 – cjk 2011-06-01 08:10:21

+0

@ck - 我同意。儘管這個約束只是例子。 – 2011-06-01 08:21:06

6

正如其他人已經回答,使用varchar數據恰好是由數字組成,但數學運算是沒有意義的。

另外,在您的示例編號中,您是否考慮過如果將002123141231存儲到bigint列中會發生什麼情況?當檢索時,它將是2123141231,即沒有辦法使用數字列來存儲前導0數字......

+0

很好的答案。電話號碼的確不會計算:P – nawfal 2013-07-20 21:06:26

0

varchar(50)適用於手機號碼數據類型。因爲它有時可能包含國家代碼,例如+91或空格。爲了比較,我們可以從表達式中刪除所有特殊字符。

相關問題