Обсуждение: 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