エラー "引数 '0'が範囲外です"

2017-10-05 15 views
0

"ORA-01428:引数 '0'が範囲外です。問題の は、以下のとおりである。エラー "引数 '0'が範囲外です"

regexp_substr(ltrim(pn.pname),'\d+',INSTR(ltrim(pn.pname),'REFERENCE ID=')) 

私はそれがそのエラーを与えているより多くのレコードをスクロールしていたとき。

例:

pname           regexp value 

FragIT<REFERENCE ID="6998"      6998 
TYPE="trademark"/> MicroSpin 

私はこのような合計クエリを使用しています:最後の条件をパットなぜ

ここ
SELECT pname, 
regexp_substr(ltrim(pn.sys_name_text),'\d+',INSTR(ltrim(pn.sys_name_text), 
'REFERENCE ID=')) comm from products p 
left join product_names pn using(product_id) 
where pname like '%trademark%' and language_id = 1 
and regexp_count(pname,'trademark') <= 1 

refrenceタグが複数回来るかもしれないがthatsの。 これについてお手伝いできますか?

答えて

1
INSTR(ltrim(pn.pname),'REFERENCE ID=') 

は(あなたが探している部分文字列が見つからなかったことを示す)0を返して、あなたがやろうとします

REGEXP_SUBSTR(value, regex, 0) 

あなたはエラーが発生します。

ORA-01428: argument '0' is out of range 

代わりに、あなたは使用することができます:

REGEXP_SUBSTR(
    pn.pname, 
    'REFERENCE ID="(\d+)"', 
    1,      -- Start from the 1st character 
    1,      -- Find the 1st occurrence 
    NULL,     -- No flags 
    1      -- Return the contents of the 1st capturing group 
) 
+0

ありがとう@MTO。私はまだこれに取り組む必要があります。 –

関連する問題