【发布时间】:2012-12-01 06:24:34
【问题描述】:
我发现an Ask Tom article 解释了Oracle 中CHAR 和VARCHAR2 之间没有太大区别。它给人的印象是我应该对我想存储字符串的每一列使用 VARCHAR2(4000 BYTE),即使是 ISO 639-1 语言代码,因为它没有任何区别。
我知道对 ISO 639-1 语言代码使用 CHAR(2) 来强制执行基本数据约束是有意义的。但这不是一个充分的约束,因为它允许将'xy' 存储在不是有效语言代码的列中。另一方面,我为这个基本约束付费,但如果我想更改我的应用程序以使用需要 3 个字符的 ISO 639-2 语言代码,我必须更改数据库。所以我倾向于从数据库层面完全放弃约束,因为在我看来成本高于收益。
考虑到这一点,我想知道是否有任何其他重要原因我不应该将 VARCHAR2(4000 BYTE) 用于我打算存储在 Oracle 数据库中的任何短于 4000 字节的字符串?
【问题讨论】:
-
+1。为什么不赞成这个?有点争议的方法,但仍然是一个很好的问题,可以为人们澄清重要的事情。比大量的“hello world”sql 问题更有趣。