2013-09-25 3 views
1

при создании таблицы в mysql 5.1 im, получив ошибку, в то время как я указываю номер телефона как целое.Как указать номер телефона?

ошибка «вне диапазона».

Я знаю, что могу указать число как varchar. Я просто хочу знать, что это их другой метод?

create table emp(
    ename varchar(20), 
    ecity varchar(10), 
    salary double, 
    enumber integer, 
    eaddress varchar(40), 
    depttname varchar(25) 
); 

Вставка:

insert into emp 
values('priya','delhi',40000,9958465876,'b-64 janak puri new delhi','manager'); 

ОШИБКА 1264 (22003): Из значения диапазона для столбца 'перечисление' в строке 1

+2

Поскольку он не будет использоваться для математических целей, он должен быть строкой –

+0

Есть ли конкретная причина, по которой вы предпочитаете хранить ее как целое число? – rid

ответ

2

Просто изменить тип данных для enumber к BigInt может сделать трюк

+2

Хотя 'bigint' имеет достаточно места для хранения этих значений, номера телефонов не предназначены для использования в математических целях. Я бы сохранил их как строки ('char' или' varchar') – Barranka

+1

@Barranka: - Я полностью согласен с вами в том, что если нет каких-либо конкретных требований по использованию int или BIGINT для хранения телефонных номеров. В противном случае предпочтение следует отдавать varchar. –

+0

@RahulTripathi Единственное возможное соображение, о котором я могу думать, - это необходимое пространство ('BIGINT' требует 8 байтов, а' VARCHAR' требует столько же байтов, сколько длина сохраненной строки плюс одна). Если таблица небольшая, это рассмотрение тривиально. – Barranka

2

Целое число в mysql имеет максимальное значение 2147483647 или 4294967295, если yo u используйте целое число без знака. Это означает, что по умолчанию большинство значений будут вне диапазона. Вы можете использовать BIGINT с подписанным диапазоном 9223372036854775807 и беззнаковым диапазоном 18446744073709551615. Этого было бы достаточно, даже если учитывать международный набор, я думаю.

2

Чтобы сохранить номера телефонов, вы можете использовать varchar. Но если есть какие-то конкретные причины для его принятия, вы можете использовать BIGINT, так как в настоящее время перед вами стоит проблема диапазона int, которая максимальна при 4294967295.

2

Номера телефонов являются одним из немногих исключений из правила не хранить числа в виде строк. Это связано с тем, что:

  • Часто численное представление больше, чем то, что может быть сохранено в поле.
  • Некоторые номера телефонов ведущих нулей, которые не должны быть отогнан, например: 0014255550177
  • Вы можете/нужно хранить не-цифровых символов с номером телефона, как +

Просто убедитесь, что вы пройдите лишнюю милю с подтверждением ввода в поле, чтобы номера телефонов были сохранены в согласованном формате, если вы хотите сделать что-то вроде поиска записей, соответствующих определенному номеру телефона.

т. Е. 780-555-1234, 780 555-1234, 780.555.1234 все должны быть удалены и сохранены как 7805551234.

Смежные вопросы