Какой лучший тип данных для номера телефона в 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.
Ответ 4
Ответ 5
вы можете использовать var- char, String и int, это зависит от вас, если вы используете только код страны с мобильным номером, чем вы можете использовать int, если вы используете специальный formate для числа, чем использование String или var- char, если вы используете var- char, тогда необходимо удалить размер номера и ограничить пользователя.
Ответ 6
VARCHAR с вероятностью 15-20 будет достаточным и будет лучшим вариантом для базы данных. Так как вам, вероятно, потребуются различные дефисы и знаки плюс вместе с вашими номерами телефонов.
Ответ 7
В mysql: BIGINT.
В java: Long.