Я использую MySQL с шаблоном Spring JDBC для своего веб-приложения. Мне нужно хранить номер телефона, состоящий только из цифр (10). Я немного запутался в использовании типа данных.
Strings & VARCHAR.
Не пытайтесь хранить телефонные номера как реальные номера. Это испортит форматирование, удалит предшествующие 0
и другие нежелательные вещи.
Вы можете, если захотите, ограничить пользовательский ввод только числовыми значениями, но даже в этом случае храните сохраняемые данные в виде символов/строк, а не чисел.
Прежде чем пытаться реализовать какие-либо ограничения длины, валидации или маски (например, XXX-XXXX-XX), ознакомьтесь с более широким миром и узнайте, как отличаются длина и форматирование чисел.
Нечисловые символы могут быть допустимы в телефонных номерах. Ярким примером является +
в качестве замены 00
в начале международного номера.
Отредактировано из беседы в комментариях:
В MySQL -> тип int(10) не означает, что 10-значное число, оно означает целое число с шириной дисплей 10 цифр. Максимальное значение для int в MySQL-2147483647 (или 4294967295 если неподписанные).
вы можете использовать тип bigint вместо int для хранения как числовой. Используя тип bigint позволит вам сэкономить 3 байта на каждую строку за тип varchar(10).
Если вы хотите сохранить "в стране + уголок + количество отдельно и". Попробуйте использовать тип varchar(20). Это дает вам возможность хранить правильно международные телефонные номера, если в этом возникнет необходимость.
Рассмотрите возможность использования Е. 164 формат. Для всесторонней международной поддержке, вы'd нужен тип varchar из 15 цифр.
Смотрите в Twilio's рекомендации для получения дополнительной информации о локализации телефоны.
varchar
String
Простой регекс. См.: https://stackoverflow.com/questions/15111420/how-to-check-if-a-string-contains-only-digits-in-java. Используйте javax.constraints.Pattern.
вы можете использовать ВАР-типа char,String и int ,он зависит от вас, если вы используете только код страны с мобильного телефона, чем вы можете использовать int,если вы используете специальный формат для использования строк или переменных типа char, если вы используете ВАР-чар, то должна осквернять размер число и ограничения пользователя.
Это's все основано на вашем требовании. если вы разрабатываете небольшой масштаб приложение и распространяется только на определенные области (целевая аудитория), вы можете выбрать тип bigint хранить только числа с типом varchar потребляет больше байт, чем значение типа bigint ( имеющие оптимальное вопросов проектирования использования памяти ). но при разработке крупных приложений и задач пользователей глобальной сети и Вы имеете достаточно возможностей БД для хранения данных, вы можете определенно выбрать тип varchar.
В MySQL: тип bigint. В Java: длинные.