2017-10-05 950 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标签可能会不止一次这就是为什么推杆最后一个条件。 可以请你帮忙。

回答

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

Thanks @MTO .i think i still需要在此工作。 –

相关问题