oracle - 为什么要使用除VARCHAR2(4000)之外的其他任何方式将字符串存储在Oracle数据库中?

标签 oracle database-design

我发现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/

相关文章:

c# - ORA-00936 缺少表达式

sql - 没有嵌套查询的 listagg 中的不同值

sql - Maximo 中的 ASSET 表是否有主键?

oracle - 为什么 GETDATE() 是无效标识符

MySQL:如何转换为 EAV - 第 2 部分?

oracle - 将物化 View 更改为提交时

php - 规划 SQL 数据库所需的帮助

mysql - 四个关系表的设计

mysql - 数据库设计 : 1 table or 2?

mysql - MySQL 5.5继承关系模型中的完整性约束问题