9

我发现了一篇 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 字节的字符串?

4

1 回答 1

6

Tom Kyte 也在这里反驳了你的提议:https ://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1145132537055

于 2012-12-13T11:30:30.403 回答