sql >> Database teknologi >  >> RDS >> PostgreSQL

Sådan opdeles række i mange rækker i postgresql

Du kan bruge regexp_split_to_table med et negativt lookahead for beskadigede;

SELECT "ID", regexp_split_to_table("Cars", '((, (?!damaged))| and )') "Cars" 
FROM mytable;

 ID |      Cars
----+-----------------
  1 | opel
  1 | honda
  1 | land rover
  2 | ford
  2 | porshe, damaged
  3 | volkswagen
  4 | opel
  4 | seat, damaged
(8 rows)

En SQLfiddle at teste med .

EDIT:For dine nye eksempler skulle regexet justeres lidt;

SELECT "ID", regexp_split_to_table("Cars", '(([,;] (?!damaged))|[,;]? and )') "Cars" 
FROM mytable;

Endnu en SQLfiddle .




  1. Generer månedsnavn, dagnavn, ugenummer og dagnummer mellem to datoer

  2. Forbedring af backend-ydeevne Del 2/3:Brug af databaseindekser

  3. Brug af et HTML-afkrydsningsfelt til at sætte 1 eller 0 i en MySQL-tabel

  4. PHP &MySQL:Konvertering af lagret TIMESTAMP til brugerens lokale tidszone