当我需要将空值视为等于时,如何创建唯一约束。
有关
alter table T1添加约束T1_UN 独特的(nvl(C1,''))
我得到了
ORA-00904: : invalid identifier
点nvl
谢谢!
答案 0 :(得分:4)
NOT NULL
似乎是一个更好的主意,但您可以使基于函数的索引唯一:
create unique index idx_t1 on t1 (nvl(C1, ' '));
答案 1 :(得分:1)
只需填写专栏NOT NULL
。
NULL
的本质是它永远不会与任何东西相等。因此,列中的每个NULL
值在某种程度上都已UNIQUE
。将它们包含在您想要的UNIQUE
键中是没有意义的。您想要这样做的原因可能是现有的数据完整性问题。因此,要创建列NOT NULL
,您可能必须先将NULL
值迁移到其他位置,首先...
注意:您可以简单地使列UNIQUE
。然后,如上所述,您可以拥有多个NULL
值...