Обсуждение: regexp_replace( , , , NULL ) returns null?
Is there any particular reason for this: decibel@decina.local=# SELECT regexp_replace( 'a', 'a', 'b', null ) IS NULL;?column? ----------t (1 row) ISTM it’d be a lot better if it treated NULL flags the same as ‘’... -- Jim Nasby, Lead Data Architect (512) 569-9461
Jim Nasby <jnasby@enova.com> writes: > Is there any particular reason for this: > decibel@decina.local=# SELECT regexp_replace( 'a', 'a', 'b', null ) IS NULL; > ?column? > ---------- > t > (1 row) Yeah: regexp_replace is strict. > ISTM it�d be a lot better if it treated NULL flags the same as ��... In Oracle's universe that probably makes sense, but to me it's not sensible. Why should "unknown" flags produce a non-unknown result? I find it hard to envision many use-cases where you wouldn't actually have the flags as a constant, anyway; they're too fundamental to the behavior of the function. regards, tom lane
On 5/2/14, 8:57 PM, Tom Lane wrote: > Jim Nasby <jnasby@enova.com> writes: >> ISTM it’d be a lot better if it treated NULL flags the same as ‘’... > > In Oracle's universe that probably makes sense, but to me it's not > sensible. Why should "unknown" flags produce a non-unknown result? Only because they're more options than data. > I find it hard to envision many use-cases where you wouldn't actually > have the flags as a constant, anyway; they're too fundamental to the > behavior of the function. Unless you're wrapping this function; handling the case of the flags being optional becomes easier then. (FWIW, I'm creating a version that accepts an array of search/replace arguments.) -- Jim Nasby, Lead Data Architect (512) 569-9461