select regexp_replace((select regexp_substr(reference_number, '[^|]+', 1, level),
reference_number
from ups_ship1
connect by regexp_substr(reference_number, '[^|]+', 1, level)
is not null), '(\D+)', '')
from ups_ship1;
2 に答える
2
何をしようとしているのかを理解するのは少し難しいですが、最初のパラメーターとして多くの行 (2 列) を返すサブクエリの結果を に送信することはできませんregexp_replace
。
次のように FROM 句にサブクエリを含めることができます。
select regexp_replace(rn, '(\D+)', '')
from (select regexp_substr(reference_number, '[^|]+', 1, level) rn,
reference_number
from ups_ship1
connect by regexp_substr(reference_number, '[^|]+', 1, level)
is not null) up;
于 2013-05-30T08:51:00.420 に答える
1
データがないとわかりにくいですが、前の質問とベンの回答に基づいて、2つの列(計算された抽出値と元のパイプ区切り文字列)regexp_replace
を渡しています-これによりORA-00913が返されます-regexp_substr()
複数の行が返されます、これも間違っています。
私はあなたがこれを望んでいると思います:
select reference_number, regexp_replace(val, '(\D+)', '')
from (
select regexp_substr(reference_number, '[^|]+', 1, level) val,
reference_number
from ups_ship1
connect by regexp_substr(reference_number, '[^|]+', 1, level) is not null
);
前の質問のサンプル データに基づく SQL Fiddle ですが、置換をトリガーするデータはありません。
于 2013-05-30T08:52:09.943 に答える