Re: CASE(?) to write in a different column based on a string pattern - Mailing list pgsql-general

From Geoff Winkless
Subject Re: CASE(?) to write in a different column based on a string pattern
Date
Msg-id CAEzk6ff14JeGb0MtbGZLq2vSJ7SrnNE6FzABsRrkb_n592E-YQ@mail.gmail.com
Whole thread Raw
In response to CASE(?) to write in a different column based on a string pattern  (Moreno Andreo <moreno.andreo@evolu-s.it>)
Responses Re: CASE(?) to write in a different column based on a string pattern  (Andrew Kerber <andrew.kerber@gmail.com>)
Re: CASE(?) to write in a different column based on a string pattern  (Moreno Andreo <moreno.andreo@evolu-s.it>)
List pgsql-general
On Wed, 13 Nov 2019 at 16:24, Moreno Andreo <moreno.andreo@evolu-s.it> wrote:
> |foo   |bar  |baz |
>   1234
>              5678
>                          9012
> (hoping text formatting is ok... 1234 should go in column foo, 568 in
> bar and 9012 in baz)
>
> Is it possible?

Simplest way in plain SQL would be individual case statements for each
column, I think.

SELECT pattern,
  CASE WHEN pattern LIKE 'foo%' THEN SUBSTR(pattern, 4) ELSE '' END AS foo
  CASE WHEN pattern LIKE 'bar%' THEN SUBSTR(pattern, 4) ELSE '' END AS bar
  CASE WHEN pattern LIKE 'baz%' THEN SUBSTR(pattern, 4) ELSE '' END AS baz
FROM tbl;

Geoff



pgsql-general by date:

Previous
From: Moreno Andreo
Date:
Subject: CASE(?) to write in a different column based on a string pattern
Next
From: Andrew Kerber
Date:
Subject: Re: CASE(?) to write in a different column based on a string pattern