#mysql #sql
#mysql #sql
Вопрос:
Я использовал INT(11)
тип данных MySQL, но мне пришлось перейти на using CHAR(45)
, потому что я имел дело с большими целыми числами.
Теперь CHAR
позволяет отправлять пустые строки, а не возвращать ошибки, как это должно быть. Есть ли другой тип данных, который я могу использовать?
Комментарии:
1. Насколько мне известно,
CHAR
,VARCHAR
иTEXT
все они допускают пустые строки, и, вероятно, вы мало что можете сделать, чтобы изменить это. Однако вы могли бы выполнить проверку до того, как ваши данные попадут в базу данных, что, вероятно, является вашим лучшим выбором. Или, возможно,BIGINT
столбец?2.
(11)
Только для отображаемых значений — это не влияет наINT
хранилища значений. Почему вы думали, что тип данных на основе строк был лучшей идеей, ускользает от меня…
Ответ №1:
Вы могли бы использовать BIGINT или UNSIGNED BIGINT.
В любом случае, вам следует выполнить некоторую проверку на уровне приложения, чтобы показать пользователю какое-либо значимое сообщение об ошибке, когда отправленные им данные недействительны. И это независимо от используемого типа данных.
Ответ №2:
я бы использовал BigInt, проверьте эту страницу: http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html
Ответ №3:
если у INT нет нужного вам диапазона, вы можете «обновить» до BIGINT
Вообще говоря, если значение равно number, вы должны придерживаться числовых классов данных — невыполнение этого обычно приводит к труднодоступным ошибкам и проблемам.
полушагом было бы указать INT как UNSIGNED (по сути, удваивает диапазон, не включая отрицательную сторону числовой строки в пространство данных)
Смотрите документацию для получения дополнительной информации о числовых типах.