On 9 Sep 2013, at 21:03, Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> wrote:
> select string_agg(case when words like '*%*' then upper(btrim(words, '*')) else words end, ' ')
> from regexp_split_to_table('The *quick* *brown* fox jumped over the *lazy* dog', ' ') as words;
>
> string_agg
> ----------------------------------------------
> The QUICK BROWN fox jumped over the LAZY dog
That's quite elegant. In the end I exported and used PERL, as some of my 'words' had spaces (they were ingredients like monosodium glutamate), but you could probably do a more complex regex in regexp_split_to_table to cope with that, or use pl/perl as previously suggested.
Thanks
Oliver
www.agilebase.co.uk