Тип данных MySQL, который не может быть пустым?

#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 (по сути, удваивает диапазон, не включая отрицательную сторону числовой строки в пространство данных)

Смотрите документацию для получения дополнительной информации о числовых типах.