MySQL Int удаляет 0 - PullRequest
       6

MySQL Int удаляет 0

1 голос
/ 30 августа 2009

Привет! В моей базе данных есть столбец с установленным значением Int.

Но мои данные всегда начинаются с 0, поэтому всякий раз, когда я добавляю новую запись, она удаляет 0, и я не хочу, чтобы это делалось, если первый символ в какой-то момент должен быть 1.

Как я могу преодолеть эту проблему?

Является ли лучший способ использовать VARCHAR для проверки с использованием PHP?

Обновление

Если я введу 02118272, он будет сохранен в базе данных как 2118272.

Ответы [ 3 ]

6 голосов
/ 30 августа 2009

Целое число 7 - это то же самое, что и целое число 000000000000000000000000007. Они оба ... ты знаешь ... семь. Когда хранится в базе данных, он на самом деле хранится как-то вроде 000000000000000000000000007, но большинство клиентов MySQL не будут показывать все эти нули.

Если в вашем приложении важно показывать эти числа, используя определенное количество цифр, вы можете добавить столько начальных нулей, сколько хотите, используя функцию str_pad():

str_pad($your_string, 10, '0', STR_PAD_LEFT);

Здесь 10 - длина, которую вы хотите, чтобы строка была, '0' - символ, который будет добавлен для того, чтобы сделать его такой длины, а STR_PAD_LEFT говорит о добавлении символов в левую руку. сторона строки.

Если, с другой стороны, число '007' принципиально отличается от числа '7', то вам придется использовать поле VARCHAR() для его хранения. Это уже не целые числа; это строки с очень разными значениями.

3 голосов
/ 30 августа 2009

То, что вы должны хранить в своей базе данных, это data . Ответственность за форматирование этих данных несут приложения, а не сама база данных.

Я бы сохранил его как целое число, и, если вам это нужно, до 7 десятичных знаков с ведущими нулями, правильное место для этого - после извлечения данных в ваше приложение.

1 голос
/ 30 августа 2009

Я думаю, что вы должны использовать тип varchar для этого поля. Если вы хотите преобразовать переменную в целое число в php, вы можете просто сделать это:

$var=preg_replace("/[^\d]/","",$var);

при этом вы удаляете все символы, которые не являются числами, а затем вы можете поместить это значение в БД, сохранив начальные 0.

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