将数字存储为varchar

时间:2010-06-09 17:46:08

标签: mysql

将数字存储为varchar可以吗?

之间有什么区别

int 123456789012varchar 123456789012

4 个答案:

答案 0 :(得分:35)

不,这几乎总是一个坏主意。

  • 将使用更多空间
  • 索引效果不佳
  • 你不能做算术
  • 由于类型
  • ,数据无法自我验证
  • 自动模型生成器会为您提供字符串类型而不是数字
  • 像SUM那样的聚合将不再有效
  • 输出可能排序错误
  • 您需要CAST才能将其用作数字,从而导致性能下降

答案 1 :(得分:3)

您可以将前导零存储到varchar,而不能使用整数列(例如,1230000123之间可能存在差异)。例如某些国家/地区的邮政编码。但是,如果您需要这样做,那么您实际上正在处理应该具有varchar列的文本信息。例如,电话号码或邮政编码肯定应该转到varchar列。

否则,如果您使用的数据如数字(将它们加在一起,比较它们等),那么您应该将它放入整数列。它们占用的空间更少,使用起来更快。

答案 2 :(得分:1)

我认为可以将数字存储为varchar,只要您不想使用它进行计算。

例如,电话号码或邮政编码最好存储在varchar字段中,因为您可以格式化它们。

答案 3 :(得分:0)

您将无法使用声明为varchar的列进行计算,因此应使用数字类型。既然你的SQL查询仍然是一个字符串,MySQL会为你做所有的转换(当然,这并不意味着你不需要验证用户提供的值)。