我发现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字节的字符串?
答案 0 :(得分:6)