Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

obtendo o argumento de erro '0' está fora do intervalo

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

está retornando 0 (indicando que a substring que você está procurando não foi encontrada) e se você tentar fazer:
 REGEXP_SUBSTR( value, regex, 0 )

Você receberá o erro:
ORA-01428: argument '0' is out of range

Em vez disso, você pode usar:
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
)