在Oracle中使用nvl创建唯一约束

时间:2011-06-16 09:21:56

标签: oracle unique-constraint

当我需要将空值视为等于时,如何创建唯一约束。

有关

  

alter table T1添加约束T1_UN   独特的(nvl(C1,''))

我得到了

 ORA-00904: : invalid identifier

点nvl

谢谢!

2 个答案:

答案 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值...