Oracle 10g で SQL クエリを実行しています。2 つのテーブルがあります (サンプル データを以下に示します)。テーブル t2 からいくつかのフィールドを抽出し、テーブル t1 の空の列を更新しようとしています。次のエラーが発生します。
ORA 01722: 番号が無効です( REGEXP_SUBSTRを指しています)
これは、テーブル内の非数値データ (" NO code {...} " など) が原因であることを理解しており、REGEXP_SUBSTR* 式を使用して抽出しようとしています。例外をスローする代わりに、「文字列全体をコピー」してください。
MERGE
INTO temptab t1
USING directory_list t2
ON (REGEXP_SUBSTR(codelist, '[^.]+', 1) = t2.tcode)
WHEN MATCHED THEN
UPDATE
SET t1.tcode = t2.tcode,
t1.des = t2.des
temptab t1
Codelist | T1.tcode | T1.des
1111.1.803.12.X.Z
1000.2.3232.145.M.P
300.12.2982.45.X.Y
NO code {...}
1111.1.803.12.X.Z
directory_list t2
tcode | DES
1000 | powervalue100
300 | powermax300
20 | powermin20
NO code {...} | maxvalue plus
1000 | powervalue100
ありがとう、
初心者