【发布时间】:2013-02-28 19:16:51
【问题描述】:
我正在尝试对包含与 Oracle 11g 下人员有关的记录的表进行更新。我有一列包含 ID,其中一些包含连字符。该表对此 ID 有限制,因此两个不同的人不能拥有相同的 ID。我的目标是删除连字符,同时在我进行更新时避免任何违反约束的行为。所以我尝试了这个查询来检测违反约束的记录:
SELECT count(*) FROM people
WHERE externalid LIKE '%-%' AND
replace(externalid, '-') IS IN (SELECT externalid FROM people);
然后这会失败并出现 ORA-00908:缺少 NULL 关键字。我知道这是由于最后一行,但我不知道如何构造查询的该部分以检测已使用非连字符 ID 的记录。如何检测这些违反约束的记录?
【问题讨论】: