какой тип данных использовать для хранения мобильного номера - PullRequest
10 голосов
/ 01 июня 2011

Какой тип данных я буду использовать для хранения мобильных номеров из 10 цифр (например: 9932234242).Должен ли я пойти на varchar (10) или на большой - "bigint".

Если число имеет тип- '0021-23141231', то какой тип данных использовать?

Ответы [ 4 ]

12 голосов
/ 01 июня 2011
  • varchar / char достаточно долго для всех ожидаемых (например, британские цифры 11 длинны)
  • проверить ограничение, чтобы разрешить только цифры (выражение = NOT LIKE '%[^0-9]%')
  • формат в клиенте для каждой локали (Великобритания = 07123 456 789, Швейцария = 071 234 56 78)
9 голосов
/ 01 июня 2011

Как уже отвечали другие, используйте varchar для данных, которые, как оказалось, состоят из цифровых цифр, но для которых математические операции не имеют смысла.

Кроме того, в вашем примере числа вы рассматривали, что произойдетесли вы сохранили 002123141231 в столбце bigint?После извлечения это будет 2123141231, т. Е. В числовом столбце нет способа сохранить начальные 0 цифры ...

3 голосов
/ 01 июня 2011

Используйте 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 голосов
/ 26 мая 2017

varchar (50) подходит для типа данных мобильного номера. потому что иногда он может содержать код страны, например +91 или пробелы. Для сравнения мы можем удалить все специальные символы с обеих сторон в выражении.

...