Разрешить число начинаться с нуля при сохранении в поле целых чисел mysql - PullRequest
12 голосов
/ 07 мая 2010

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

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

Ответы [ 7 ]

19 голосов
/ 17 января 2011

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

6 голосов
/ 07 мая 2010

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

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

5 голосов
/ 07 мая 2010

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

3 голосов
/ 07 мая 2010

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

3 голосов
/ 07 мая 2010

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

1 голос
/ 07 мая 2010

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

  1. изменить тип поля с целого на varchar или char (если число цифр ВСЕГДА одинаково).

  2. Сохраните число как целое число, НО добавьте 0 в своем уровне представления при необходимости.

0 голосов
/ 26 декабря 2013

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

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

}

Если вы говорите, число 2, которое выхотите вывести как 02, вы бы сделали leadZero (2);

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

...