Oracle 11g の下の人に関するレコードを含むテーブルを更新しようとしています。ID を含む列があり、その一部にはハイフンが含まれています。テーブルにはこの ID に関する制約があるため、2 人の異なる人が同じ ID を持つことはできません。私の目標は、更新時に制約違反を回避しながら、ハイフンを削除することです。そこで、制約に違反するレコードを検出するために、次のクエリを試しました。
SELECT count(*) FROM people
WHERE externalid LIKE '%-%' AND
replace(externalid, '-') IS IN (SELECT externalid FROM people);
これは、ORA-00908: NULL キーワードがありませんで失敗します。これが最後の行によるものであることはわかっていますが、クエリのその部分を構造化して、ハイフンなしの ID が既に使用されているレコードを検出する方法が他にわかりません。制約に違反するこれらのレコードを検出するにはどうすればよいですか?