Guten Abend,
ich habe eine kleine Übungsaufgabe mit PostgreSQL vor, indem ich in einer Tabelle einen Composite Type (also einen eigenen Typ) benutzen möchte.
Jedoch werden beim Befüllen der Daten innerhalb der Spalten vom Typ text/character varying jedesmal die Leerzeichen durch EscapeSequenzen ersetzt.
Ich hatte wirklich sehr vieles ausprobiert und komme nicht zur Lösung.
Der Aufbau:
CREATE TABLE public.person
(
id integer NOT NULL,
nachname character varying(255) COLLATE pg_catalog.“default” NOT NULL,
vorname character varying(255) COLLATE pg_catalog.“default” NOT NULL,
“Adresse” “Adresse”[],
CONSTRAINT person_pkey PRIMARY KEY (id)
)
CREATE TYPE public.“Adresse” AS
(
id_adresse integer,
plz integer,
wohnort text,
strasse text,
hausnr integer,
land text
);
–
Das Insert-Statement (dieser besagt, dass die folgende Person 2 gleichzeitige Adressen besitzt):
insert into person values (1,‘Grabowsky’,‘Karl Heinz’, ‘01.06.1960’, ‘M’, ARRAY[ROW(1,55801, ‘Bad Salzuflen’,‘Soester’ || ’ ’ || ‘Weg’,51,‘Deutschland’)::“Adresse”, row(2,15098,‘Emsbueren’,‘Ackerstraße’,54,‘Deutschland’)::“Adresse”] );
Resultat:
Jedoch werden alle Leerzeichen (bzw. Escape-Sequenzen) enthaltenen Strings ersetzt nach folgendem Schema:
\"Bad Salzuflen\"
Meine Ansätze:
Ich versuchte es mit Funktionen wie chr(32), concat, quote_literal, array_to_string etc.
Ich hatte es auch versucht mit encode(E’W '::bytea, ‘hex’) das Leerzeichen explizit über die Funktion encode herauszufinden, womit ich auf den Hexwert 20 kam bzw. 32 Dezimal. Es löste nicht das Problem.
Falls einer helfen kann oder möchte wäre dies schön.
Mein konkreter Sinn dieses Ansatzes ist einfach - ich möchte innerhalb einer Middleware NodeJS nicht ständig einen gesamten Datensatz abrufen nach dem Schema:
{
name: Grabowsky,
vorname: Karl,
Adresse 1 …
},
{
name: Grabowsky,
vorname: Karl,
Adresse 2 …
}
Es sollte alle Daten zu einer Person in einem Datensatz enthalten sein, also:
{
name: Grabowsky,
vorname: Karl,
{Adresse 1}
{Adresse 2}
}
Dies soll schon auf Datenbankebene geschehen, anstatt erst in der Middleware,
wo es auch ORM Ansätze gibt, die ein nested JSON Datensatz ermöglichen - die ich jedoch lieber auf Datenbankebene schon lösen möchte. Was evtl. auch performanter ist.
Vielen Dank um jede Hilfe!