我正在嘗試對包含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