我发现了一篇 Ask Tom 文章,解释了 Oracle 中 CHAR 和 VARCHAR2 之间没有太大区别。它给人的印象是我应该对我想存储字符串的每一列使用 VARCHAR2(4000 BYTE),即使是 ISO 639-1 语言代码,因为它没有任何区别。
我知道对 ISO 639-1 语言代码使用 CHAR(2) 来强制执行基本数据约束是有意义的。但这不是一个充分的约束,因为它允许存储'xy'
在不是有效语言代码的列中。另一方面,我为这个基本约束付费,但如果我想更改我的应用程序以使用 ISO 639-2 语言代码(需要 3 个字符),我必须更改数据库。所以我倾向于从数据库级别完全放弃约束,因为在我看来成本高于收益。
考虑到这一点,我想知道是否还有其他重要原因为什么我不应该将 VARCHAR2(4000 BYTE) 用于我打算存储在 Oracle 数据库中的任何小于 4000 字节的字符串?