你们如何用Oracle处理空字符串?
声明#1 :Oracle在“varchar2”字段中将空字符串(例如'')视为NULL。
声明#2 :我们有一个定义抽象'表结构'的模型,我们有字段,不能为NULL,但可以是“空”。该模型适用于各种DBMS;几乎无处不在,一切都很好,但不是Oracle。您无法将空字符串插入“非空”字段
声明#3 :在我们的案例中不允许使用非空默认值。
那么,有人会如此友善地告诉我 - 我们如何解决它?
答案 0 :(得分:7)
这就是为什么我从未理解为什么Oracle如此受欢迎。基于他们多年前做出的愚蠢决定,他们实际上并没有遵循SQL标准。
Oracle 9i SQL Reference声明(至少有三个主要版本):
Oracle目前将长度为零的字符值视为null。但是,在将来的版本中可能不会继续这样,Oracle建议您不要将空字符串视为空值。
但是他们并没有说你应该做什么。我找到解决这个问题的唯一方法是:
答案 1 :(得分:3)
我们是否可以说“在支持标准SQL行为之前不支持Oracle”?在许多方面,这似乎是最不痛苦的方式。
如果你不能强制(使用)一个空白,或者可能是一个Unicode零宽度不间断空间(U + FEFF),那么你可能不得不去整个生猪并使用一些难以置信的东西,如32 Z's表明数据应该是空白的,但不是因为使用的DBMS是可怕的。
答案 2 :(得分:1)
Oracle中的空字符串和NULL是一回事。您希望允许空字符串但不允许使用NULL。
您在表上放置了NOT NULL约束,这与not-an-empty-string约束相同。如果你删除了那个约束,那你输了什么?