sql >> Databáze >  >> RDS >> PostgreSQL

Postgres rozdělit řetězec s dvojitými uvozovkami na více řádků?

location řetězec je podobný textovému poli. Převeďte jej na text[] a unest:

with my_data(id, location) as (
values 
    (1, '["Humboldt, TN","Medina, TN","Milan, TN"]')
)

select id, unnest(format('{%s}', trim(location, '[]'))::text[]) as location
from my_data

 id |   location   
----+--------------
  1 | Humboldt, TN
  1 | Medina, TN
  1 | Milan, TN
(3 rows)

Nebo ještě jednodušší přetypování řetězce do jsonb a použijte jsonb_array_elements_text() :

with my_data(id, location) as (
values 
    (1, '["Humboldt, TN","Medina, TN","Milan, TN"]')
)

select id, jsonb_array_elements_text(location::jsonb) as location
from my_data

Db<>housle.




  1. Jak určit typy sloupců pro CTE (Common Table Expressions) v PostgreSQL?

  2. MySQL odstraňuje duplicitní řádky

  3. Jak vypočítat rozdíl DATE v PostgreSQL?

  4. Když máte pole TEXT v MySQL nebo PostgreSQL, měli byste ho umístit do samostatné tabulky?