Можно ли хранить числа как varchar?
Какая разница между
int 123456789012
и varchar 123456789012
?
Можно ли хранить числа как varchar?
Какая разница между
int 123456789012
и varchar 123456789012
?
Нет, это почти всегда плохая идея.
Вы можете хранить ведущие нули в varchar, которые вы не можете делать с целыми столбцами (например, возможно иметь разницу между 123
и 0000123
). Например, почтовые индексы в некоторых странах. Однако, если вам нужно это сделать, тогда вы действительно имеете дело с текстовой информацией, которая должна иметь столбец varchar. Например, номера телефонов или почтовые индексы должны обязательно перейти к столбцу varchar.
В противном случае, если вы используете свои данные, например числа (добавляя их вместе, сравнивая их и т.д.), вы должны поместить его в целочисленный столбец. Они потребляют гораздо меньше места и быстрее используются.
Я думаю, нормально хранить числа как varchar, если вы не хотите делать вычисления с ним.
Например, номер телефона или почтовые индексы лучше хранить в полях varchar, потому что вы можете их форматировать.
Вы не сможете выполнять вычисления с столбцами, объявленными как varchar, поэтому следует использовать числовые типы. И так как ваш SQL-запрос является строкой в любом случае, MySQL выполняет все преобразования для вас (это не значит, что вам не нужно проверять значения, предоставленные пользователем, конечно).