Разрешить число начинаться с нуля при хранении в поле MySQL integer

Мне нужно хранить номера телефонов, начинающиеся с 0, но всякий раз, когда я пытаюсь сохранить это в таблице MySql, начальный ноль удаляется, потому что ни одно число не начинается с нуля на самом деле.

Как решить эту проблему? Нужно ли менять тип поля с Integer на другой тип?

7 ответов


изменить тип данных для unsigned-zerofill все, что вы используете, float, int, decimal(6,2)... измените поле только на unsigned-zerofill


номера телефонов на самом деле не являются номерами в том смысле, что они не являются порядковыми. Это просто символы - тот факт, что они являются числами, является случайным.

хранить их в varchar и двигаться дальше: D


номера телефонов могут содержать и другие символы для удобства чтения... регулярное выражение для номера телефона выглядит примерно так:[0-9+-()*#]+. Поэтому вам нужно использовать текстовое поле для номеров телефонов, а также некоторую проверку.


вы можете использовать тип данных как varchar для решения этой проблемы.


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


Yes-числовые поля хранят только числовые значения, а не форматирование тех (которые paddin с ведущими нулями). Вы должны либо

  1. измените тип поля с integer на varchar или char (если # цифр всегда одинаковое).

  2. сохраните число как целое, но добавьте 0 в слой презентации по мере необходимости.


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

function leadZero($num) {
    if (strlen($num) < 2) {
        return "0" . $num;
    } else {
        return $num;
    }

}

Если у вас есть, скажем, число 2, которое вы хотите вывести как 02, Вы бы сделали leadZero (2);

Это добавит только ноль, если число меньше 2 цифр в длину ! Например, leadZero( 14); вернет 14