Какой лучший тип данных для номера телефона в MySQL и каково должно быть отображение типа Java?

Я использую MySQL с шаблоном JDBC Spring для своего веб-приложения. Мне нужно сохранить номер телефона только с цифрами (10). Я немного запутался в типе данных, используя тип данных.

  • Какой предпочтительный тип данных для него в MySQL?
  • Для чего должен быть тип данных Java в классах Bean (POJO)?
  • Как я могу проверить этот тип данных с помощью javax validations/constraints для длины, а также только допустимую цифру?

Ответы

Ответ 1

Строки и VARCHAR.

  • Не пытайтесь хранить телефонные номера в качестве фактических номеров. это испортит форматирование, удалит предыдущие 0 и другие нежелательные вещи.

  • Вы можете, если захотите, ограничить ввод данных пользователем только числовыми значениями, но даже в этом случае сохраните сохраненные данные в виде символов/строк, а не цифр.

  • Помните о более широком мире и о том, как их длины и форматирование отличаются, прежде чем пытаться реализовать любые ограничения длины, validationd или маскировку (XXX-XXXX-XX).

  • Номера числовых символов могут быть действительными номерами телефонов. Примером является + в качестве замены 00 в начале международного номера.

Ответ 2

В MySQL → INT (10) не означает 10-значное число, это означает целое число с шириной отображения 10 цифр. Максимальное значение для INT в MySQL составляет 2147483647 (или 4294967295, если без знака).

Вы можете использовать BIGINT вместо INT, чтобы сохранить его как числовое. С помощью BIGINT сохранит вам 3 байта в строке над VARCHAR (10).

Если вы хотите сохранить "Страна + область + номер отдельно". Попробуйте использовать VARCHAR (20). Это позволяет вам правильно хранить международные телефонные номера, если это необходимо.

Ответ 3

Рассмотрите возможность использования формата E.164. Для полной международной поддержки вам понадобится VARCHAR из 15 цифр.

Подробнее о локализации телефонных номеров см. рекомендацию Twilio.

Ответ 5

вы можете использовать var- char, String и int, это зависит от вас, если вы используете только код страны с мобильным номером, чем вы можете использовать int, если вы используете специальный formate для числа, чем использование String или var- char, если вы используете var- char, тогда необходимо удалить размер номера и ограничить пользователя.

Ответ 6

VARCHAR с вероятностью 15-20 будет достаточным и будет лучшим вариантом для базы данных. Так как вам, вероятно, потребуются различные дефисы и знаки плюс вместе с вашими номерами телефонов.

Ответ 7

В mysql: BIGINT. В java: Long.