On 9 Sep 2013, at 21:03, Alvaro Herrera <alvherre@xxxxxxxxxxxxxxx> wrote: select string_agg(case when words like '*%*' then upper(btrim(words, '*')) else words end, ' ') 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 |