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

Postgresql - Regex rozdělený csv řádek s potenciálními uvozovkami

Ne o regulárním výrazu, ale funguje to

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 ║╠══════════════════════ ═══════════════════════════╪══╪══╕╕═══╕════╕═║║═╕═║ pole2,pole3,"22\" lcd | obrazovka "} │ 22" LCD | obrazovka ║║ {a,b} │ ░░░░ ║╚══════════════════╕═══════════════════ ═══════════╧═══════════════════════════> 


  1. Nelze se přihlásit pomocí vytvořeného uživatele v mysql

  2. Jak provést uloženou proceduru uvnitř výběrového dotazu

  3. Eliminace duplikace výrazů Where v aplikaci

  4. Zajištění pravidelného servisu SQL Serveru