From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Rob Sargent <robjsargent(at)gmail(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: regexp_replace failing on 9.0.4 |
Date: | 2013-03-22 00:25:17 |
Message-ID: | 17297.1363911917@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Rob Sargent <robjsargent(at)gmail(dot)com> writes:
> For fun I decided to install 9.2 and thought I would try my luck there.
> Here's was I saw (apologies for the wide output).
> << simple update in place>>
> update cms.segment_data
> set text = regexp_replace(text,'(^.*)ns/acres/pathology/dx/1.5(.*$)',
> E'\\1ns/acres/pathology/dx/1.6\\2')
> where id = 'c092880f-8484-4b29-b712-f3df12216701';
> UPDATE 1
> [ doesn't change the first 150 characters of the field ]
> << update in parts >>
> update cms.segment_data set text =
> regexp_replace(substring(text,1,150),
> '(^.*)ns/acres/pathology/dx/1.5(.*$)',
> E'\\1ns/acres/pathology/dx/1.6\\2') || substring(text, 151)
> where id = 'c092880f-8484-4b29-b712-f3df12216701';
> UPDATE 1
> [ does change the first 150 characters of the field ]
I'm suspicious that there is more than one match to the substring
in that field, with the extra match(es) coming beyond char 150.
The way that regexp is written, I think it would replace the last
match not the first.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Rob Sargent | 2013-03-22 00:32:22 | Re: regexp_replace failing on 9.0.4 |
Previous Message | Jeff Janes | 2013-03-21 22:10:36 | Re: Bad plan on a huge table query |