我尝试插入一个对2列具有唯一约束的表,并遇到唯一约束错误。
选择不同的查询会返回以下记录:
Record 1:
ColA:A001 ColB:TV set A001
Record 2:
ColA:A001 ColB:Tv set A001
oracle在验证唯一约束时是否进行区分大小写的比较?例如,在上面的场景中,我们可以看到除了ColB(TV verus Tv)之外的所有值都是相同的。区别显示它们是两个不同的记录,而独特的约束似乎认为它们是相同的?
任何人都可以帮忙解释一下吗?
谢谢!
答案 0 :(得分:1)
默认情况下,Oracle区分大小写。因此,TV
与Tv
不同。如果约束实现为:
create unique index table_colb on table(colb)
(或create table
语句中的等价物),那么两者将是不同的。如果您想要不区分大小写,请使用功能索引:
create unique index table_colb on table(lower(colb))
答案 1 :(得分:0)
Oracle区分大小写您可以查看DDL SQL Fiddle Demo。
检查 NLS_COMP ans NLS_SORT
select * from NLS_INSTANCE_PARAMETERS where parameter in ('NLS_SORT','NLS_COMP');