sql >> Database >  >> RDS >> PostgreSQL

Postgresql - Regex gesplitste csv-regel met potentiële aanhalingstekens

Niet over regexp maar het werkt

create or replace function split_csv(
  line text,
  delim_char char(1) = ',',
  quote_char char(1) = '"')
returns setof text[] immutable language plpythonu as $$
  import csv
  return csv.reader(line.splitlines(), quotechar=quote_char, delimiter=delim_char, skipinitialspace=True, escapechar='\\')
$$;

select *, x[4] from split_csv('field1|"field2"|field3|"22 \" lcd \| screen "'||E'\n'||'a|b', delim_char := '|') as x;
╔══════════════════════════════════════════════╤════════════════════╗
║                      x                       │         x          ║
╠══════════════════════════════════════════════╪════════════════════╣
║ {field1,field2,field3,"22 \" lcd | screen "} │ 22 " lcd | screen  ║
║ {a,b}                                        │ ░░░░               ║
╚══════════════════════════════════════════════╧════════════════════╝



  1. Oracle krijgt alle datums in een maand

  2. Hoe de huidige waarde van een orakelreeks op te halen zonder deze te verhogen?

  3. MariaDB en externe gegevens

  4. Willekeurige id's in sqlalchemy (pylonen)