我发现an Ask Tom article解释说在Oracle中CHAR和VARCHAR2之间没有太大区别。它给人的印象是,我应该为要存储字符串的每一列使用VARCHAR2(4000 BYTE),即使对于ISO 639-1语言代码也是如此,因为它没有任何区别。
我知道对ISO 639-1语言代码使用CHAR(2)来强制执行基本数据约束是有意义的。但这不是一个足够的约束,因为它允许将'xy'
存储在不是有效语言代码的列中。另一方面,我为基本限制付费,但如果要更改应用程序以使用ISO 639-2语言代码(必须使用3个字符),则必须更改数据库。因此,我倾向于从数据库级别完全取消约束,因为在我看来,成本高于 yield 。
考虑到这一点,我想知道是否还有其他重要原因,为什么我不应该对要存储在Oracle数据库中的少于4000字节的任何字符串使用VARCHAR2(4000 BYTE)?
最佳答案
汤姆·凯特(Tom Kyte)在这里也驳斥了您的主张:https://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1145132537055
关于oracle - 为什么要使用除VARCHAR2(4000)之外的其他任何方式将字符串存储在Oracle数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13858562/