我正在尝试对包含Oracle 11g下的所有人的记录进行更新。我有一个包含ID的列,其中一些包含连字符。该表对此ID有约束,因此两个不同的人不能具有相同的ID。我的目标是删除连字符,同时避免更新时出现任何约束违规。所以,我想这个查询检测,将违反约束记录:尝试避免重复时丢失NULL关键字错误
SELECT count(*) FROM people
WHERE externalid LIKE '%-%' AND
replace(externalid, '-') IS IN (SELECT externalid FROM people);
这种失败,则与ORA-00908:缺少NULL关键字。我知道这是由于最后一行,但我不知道如何构建该部分查询来检测已使用的非连字ID的记录。我如何检测这些违反约束条件的记录?
哦,上帝,你是对的。我完全有一个脑袋。 – Keen 2013-02-28 19:24:23