Thread
-
maybe incorrect regexp_replace behavior in v8.3.4 ?
Gauthier, Dave <dave.gauthier@intel.com> — 2012-05-16T13:54:23Z
Hi: bi_hsx_a0_latest=# select regexp_replace('xxx','^xxx$','abc'); regexp_replace ---------------- abc (1 row) expected behavior because there's a match bi_hsx_a0_latest=# select regexp_replace('xxx','^xxxy$','abc'); regexp_replace ---------------- xxx (1 row) expected because there is no match (the 'y' in 'xxxy') bi_hsx_a0_latest=# select regexp_replace('xxx','^xxxy$',null); regexp_replace ---------------- (1 row) But why did it return null in this case? I would think no match would leave it 'xxx'. Thanks in Advance for any help and/or explanation. -
Re: maybe incorrect regexp_replace behavior in v8.3.4 ?
Richard Huxton <dev@archonet.com> — 2012-05-16T14:14:06Z
On 16/05/12 14:54, Gauthier, Dave wrote: > bi_hsx_a0_latest=# select regexp_replace('xxx','^xxxy$',null); > regexp_replace > ---------------- > > (1 row) > But why did it return null in this case? I would think no match would leave it 'xxx'. If a function is defined as "strict" then any null parameters automatically result in a null result. And indeed, this: SELECT * FROM pg_proc WHERE proname LIKE 'regexp_r%'; shows pro_isstrict is set to true, as it is for most other function.s -- Richard Huxton Archonet Ltd -
Re: maybe incorrect regexp_replace behavior in v8.3.4 ?
Tom Lane <tgl@sss.pgh.pa.us> — 2012-05-16T14:15:45Z
"Gauthier, Dave" <dave.gauthier@intel.com> writes: > bi_hsx_a0_latest=# select regexp_replace('xxx','^xxxy$',null); > regexp_replace > ---------------- > > (1 row) > But why did it return null in this case? regexp_replace is strict, so it never even gets called when there's a null input. regards, tom lane