Oracle
 sql >> Base de données >  >> RDS >> Oracle

obtenir l'argument d'erreur '0' est hors plage

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

renvoie 0 (indiquant que la sous-chaîne que vous recherchez n'a pas été trouvée) et si vous essayez de faire :

 REGEXP_SUBSTR( value, regex, 0 )

Vous obtiendrez l'erreur :

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

À la place, vous pouvez utiliser :

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
)