sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man delar upp en rad i många rader i postgresql

Du kan använda regexp_split_to_table med en negativ lookahead för skadade;

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 att testa med .

EDIT:För dina nya exempel måste regexet justeras lite;

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

Ännu en SQLfiddle .




  1. PostgreSQL-kombinationer utan upprepningar

  2. Flödesfil absolut sökväg Nifi

  3. .Net ORM som fungerar bra med MySQL

  4. Uppdatera SQL med konsekutiv numrering