Разрешить число начинаться с нуля при хранении в поле MySQL integer
Мне нужно хранить номера телефонов, начинающиеся с 0, но всякий раз, когда я пытаюсь сохранить это в таблице MySql, начальный ноль удаляется, потому что ни одно число не начинается с нуля на самом деле.
Как решить эту проблему? Нужно ли менять тип поля с Integer на другой тип?
7 ответов
изменить тип данных для unsigned-zerofill все, что вы используете, float, int, decimal(6,2)... измените поле только на unsigned-zerofill
номера телефонов на самом деле не являются номерами в том смысле, что они не являются порядковыми. Это просто символы - тот факт, что они являются числами, является случайным.
хранить их в varchar и двигаться дальше: D
номера телефонов могут содержать и другие символы для удобства чтения... регулярное выражение для номера телефона выглядит примерно так:[0-9+-()*#]+
. Поэтому вам нужно использовать текстовое поле для номеров телефонов, а также некоторую проверку.
номера телефонов не являются целыми числами, и вы будете только в конечном итоге с проблемами, пытаясь сохранить их как целые числа, хранить их как строки вместо.
Yes-числовые поля хранят только числовые значения, а не форматирование тех (которые paddin с ведущими нулями). Вы должны либо
измените тип поля с integer на varchar или char (если # цифр всегда одинаковое).
сохраните число как целое, но добавьте 0 в слой презентации по мере необходимости.
вы также можете обернуть число, которое вы хотите, с нулевым выводом с помощью функции. Я сделал эту функцию, чтобы добавить нулевое значение, если "строка" меньше 2 цифр (она использовалась для добавления нулей в часы и минуты)
function leadZero($num) {
if (strlen($num) < 2) {
return "0" . $num;
} else {
return $num;
}
}
Если у вас есть, скажем, число 2, которое вы хотите вывести как 02, Вы бы сделали leadZero (2);
Это добавит только ноль, если число меньше 2 цифр в длину ! Например, leadZero( 14); вернет 14