Числовое поле базы данных, начинающееся с 0 - PullRequest
0 голосов
/ 26 января 2011

Я использую поле с именем area_code, которое имеет тип данных int в MySQL. Но это не позволяет мне хранить точные значения, такие как 0781, 0727, 0788, потому что они начинаются с 0. Он хранит значения как 781, 727 и 788, то есть усекает 0 из значений и сохраняет его.

Пожалуйста, помогите мне ..

Ответы [ 5 ]

6 голосов
/ 26 января 2011

Коды регионов - это не цифры, а текст (который содержит только цифры).Объявите area_code как поле varchar соответствующего размера.

4 голосов
/ 26 января 2011
drop table if exists foo;
create table foo
(
area_code smallint(4) unsigned zerofill not null default 0
)
engine=innodb;

insert into foo (area_code) values (781),(727);

select * from foo;
+-----------+
| area_code |
+-----------+
|      0781 |
|      0727 |
+-----------+

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

3 голосов
/ 26 января 2011

если вы хотите, чтобы ваш результат состоял из 4 цифр, вы можете сделать это следующим образом:

select lpad(area_code, 4, '0') from zipcode_list;

теперь вы можете хранить 3 числа в вашей базе данных и возвращать ноль раньше.

3 голосов
/ 26 января 2011

Используйте VARCHAR, потому что вам не нужно совершать арифметические действия с кодами города

3 голосов
/ 26 января 2011

Используйте символьный тип данных, а не числовой тип данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...