web-dev-qa-db-ja.com

携帯電話番号を保存するために使用するデータ型

10桁の携帯電話番号を保存するためにどのデータ型を使用するか(例:9932234242)。 varchar(10)または大きなもの-「bigint」に行きましょうか。

番号がタイプ '0021-23141231'の場合、どのデータタイプを使用しますか?

12
sqlchild
  • varchar/charは、予想されるすべての長さに十分な長さです(たとえば、英国の数値は11の長さです)
  • 数字のみを許可するように制約をチェックします(式= NOT LIKE '%[^0-9]%'
  • ロケールごとのクライアントのフォーマット(UK = 07123 456 789、スイス= 071 234 56 78
12
gbn

他の人が答えているように、たまたま数字で構成されているが、数学演算が意味をなさないデータにはvarcharを使用してください。

さらに、例の番号で、002123141231bigint列に格納するとどうなるかを検討しましたか?取得すると、2123141231になります。つまり、数値列に先頭の0桁を格納する方法はありません。

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を使用することをお勧めします。

3
Alex Aza

varchar(50)は、携帯電話番号のデータ型に適しています。 +91やスペースなどの国コードが含まれる場合があるためです。比較のために、式の両側からすべての特殊文字を削除できます。

0
Shams Reza