sql >> Database >  >> RDS >> PostgreSQL

Hoe een rij in veel rijen te splitsen in postgresql

U kunt regexp_split_to_table . gebruiken met een negatieve vooruitzichten voor beschadigd;

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)

Een SQLfiddle om mee te testen .

EDIT:voor je nieuwe voorbeelden moest de regex een beetje worden aangepast;

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

Nog een SQLfiddle .




  1. Samengestelde PRIMARY KEY dwingt NOT NULL-beperkingen af ​​op betrokken kolommen

  2. JSONB gebruiken in PostgreSQL:effectief opslaan en indexeren van JSON-gegevens in PostgreSQL

  3. DBMS_SCHEDULER-taak maken voor Oracle

  4. Converteer celinhoud naar hyperlink in MySQL Datagridview