12
A
回答
32
不,这几乎总是一个坏主意。
- 将使用更多的空间
- 索引将不会执行,以及
- 你不能做算术
- 数据不是自我证实的,因为类型
- 自动模式发电机会给你的字符串类型而不是数字
- 总计像SUM将不再工作
- 输出可能会错误地排序
- 你需要转换到使用它作为一个数字,导致性能命中
- 等
0
您将无法使用声明为varchar的列进行计算,因此应使用数字类型。既然你的SQL查询是一个字符串,MySQL会为你做所有的转换(当然,这并不意味着你不需要验证用户提供的值)。
1
我觉得是OK键存储号码为varchar,只要你不想做Calcs(计算)与它。
例如,电话号码或邮政编码将更好地存储在varchar字段中,因为您可以格式化它们。
3
您可以将前导零存储到varchar中,但不能使用整数列(例如,123
和0000123
之间可能有差异)。例如一些国家的邮政编码。但是,如果您需要这样做,那么您实际上正在处理应具有varchar列的文本信息。例如,电话号码或邮政编码一定要转到varchar列。否则,如果你使用数据像数字(将它们加在一起,比较它们等),那么你应该把它放到整数列中。它们占用的空间少得多,使用起来更快。
+0
领先的零问题也可能是一个缺点。最近我遇到了一个项目的情况,由于Java代码如何处理它,一个表的前导零为零,另一个表没有。这使得在本专栏中加入更加困难。数据是一个数字,所以应该可能被存储为这样的数据而不是varchar。 – xdhmoore 2013-03-11 15:50:44
相关问题
- 1. PostgreSql将值存储为整数与varchar
- 2. 将varchar转换为数字
- 3. Oracle,将varchar转换为数字
- 4. Oracle。将varchar值“40.00”转换为数字
- 5. 将varchar转换为数字时出错
- 6. 存储为varchar/rfc822的排序日期
- 7. MATLAB将字符串存储为数组
- 8. Oracle:将“5”作为数字存储
- 9. C#:将字节数组存储为XML
- 10. Oracle将Varchar字段转换为数字如何将其转换回Varchar
- 11. SQL:datetime或VARCHAR作为参数数据类型存储过程
- 12. 如何将GETDATE()存储在varchar中,但作为日期时间?
- 13. SQL Server存储过程将varchar转换为int
- 14. 存储过程return varchar(MAX)
- 15. 存储过程返回varchar
- 16. 如何存储varchar索引?
- 17. 存储过程返回varchar
- 18. 将数字存储到MySQL
- 19. c# - excel - 如何将数字变量存储为数字字段
- 20. 将数值转换为Varchar
- 21. 将varchar转换为整数
- 22. 按varchar字段存储整数值排序表
- 23. 转换成VARCHAR在数字SQL Server存储过程
- 24. 数据库中的VARCHAR字段,其存储的GPS位置
- 25. 使用存储过程将数据插入到varchar字段的问题
- 26. 存储和索引varchar列,其中大部分值将是数字
- 27. 将时间保存到varchar字段
- 28. 如何将存储为varchar的小数增加到最近的比例?
- 29. SQL存储过程将数据类型varchar转换为bigint时出错
- 30. sql server存储过程使用varchar max作为参数
我会将诸如电话号码之类的东西存储起来,并且只将电话号码等内容存储为varchar,因为它们并不是真正的数字。你不会在电话号码上做数学。但是,当决定数据类型的字段时,应始终默认使用通过varchar的数字类型,除非您可以认为不是一个好的理由,因为从varchar到numeric的方法比其他方法困难得多。 – GordonM 2011-03-04 12:57:43