Database Error Messages

OCI-32766

instr with negative offset: use varchar semantics on LOBs

Cause

The current varchar behavior is different. e.g. instr('abcd', 'cd', -2, 1) returns 3, whereas instr(to_clob('abcd'), 'cd', -2, 1) returns 0, (i.e. no match), because the reverse search starts from offset -2, which points to 'c' and moving backward, i.e. 'd' is ignored. This is symmetric to instr('dcba','dc',2,1), which returns 0.


Action

ORACLE uses the same varchar semantics on LOBs (instr). Using the same example, instr(to_clob('abcd'), 'cd', -2, 1) will return 3 as in the varchar case.