你们如何用Oracle处理空字符串?
声明#1:Oracle在"varchar2"字段中将空字符串(例如'')视为NULL.
声明#2:我们有一个定义抽象'表结构'的模型,其中我们有字段,不能为NULL,但可以是"空".该模型适用于各种DBMS; 几乎无处不在,一切都很好,但不是Oracle.您无法将空字符串插入"非空"字段.
声明#3:在我们的情况下不允许非空默认值.
那么,有人会如此友善地告诉我 - 我们如何解决它?
这就是为什么我从未理解为什么Oracle如此受欢迎的原因.基于他们多年前做出的愚蠢决定,他们实际上并没有遵循SQL标准.
Oracle 9i SQL Reference声明(至少有三个主要版本):
Oracle目前将长度为零的字符值视为null.但是,在将来的版本中,这可能不会继续存在,Oracle建议您不要将空字符串视为与空值相同.
但他们不说什么,你应该做的.我找到解决这个问题的唯一方法是:
有一个哨兵值,在你的真实数据中不会出现以表示NULL(例如,对于一个姓氏字段的"脱氧核糖核酸",并希望电影明星不会开始给他们的孩子奇怪的姓氏以及奇怪的名字:-).
有一个单独的字段来指示第一个字段是否有效,基本上是真正的数据库对NULL的作用.