Hjelp utviklingen av nettstedet, del artikkelen med venner!

Introduksjon til PostgreSQL STRING_AGG()

PostgreSQL støtter ulike typer aggregerte funksjoner, STRING_AGG()-funksjonen er en av de aggregerte funksjonene som brukes til å sette sammen listen over strenger, og den vil legge til et sted til et skilletegn eller en skilletegn mellom alle strenger. Skilletegn eller et skilletegn vil ikke være inkludert på slutten av utdatastrengen. PostgreSQL STRING_AGG()-funksjonen støttes fra PostgreSQL 9.0-versjonen som brukes til å utføre aggregat alternativet knyttet til strengen.Vi kan bruke ulike typer skilletegn eller skilletegn for å sette sammen strengene.

Syntaks

Vurder følgende syntaks:

STRING_AGG ( uttrykk, skilletegn|skilletegn (order_by) )

Forklaring:

STRING_AGG()-funksjonen tar inndata ORDER BY-leddet er et valgfritt og to andre argumenter som følger:

  1. expression: Dette er en tegnstreng som er et hvilket som helst gyldig uttrykk.
  2. separator/separator/delimiter: Dette definerer skilletegn/skilletegn som skal brukes for strengsammenkobling.

ORDER BY-leddet er et valgfritt ledd, som definerer rekkefølgen på sammenkjedede strengresultater.

ORDER BY har syntaksen som følger:

ORDER BY expression1 {ASC - DESC}, (… )

Hvordan fungerer PostgreSQL STRING_AGG()-funksjonen?

  1. Input-uttrykket som trengs bør være en datatype for tegnstrenger. Vi kan bruke andre datatyper også, men bare vi trenger å sørge for at vi eksplisitt har castet andre datatyper til tegnstrengens datatype.
  2. The PostgreSQL STRING_AGG() gir oss resultatet i strengtype.
  3. STRING_AGG() brukes vanligvis sammen med GROUP BY-leddet som vi bruker andre PostgreSQL-aggregatfunksjoner som MIN(), MAX(), AVG(), SUM() og COUNT() osv.

Eksempler for å implementere PostgreSQL STRING_AGG()-funksjonen

Vi vil opprette en tabell som heter 'student' og 'kurs' ved å bruke CREATE TABLE-setningen som følger:

STUDENTTABELL:

opprett tabellstudent
(
stud_id serie PRIMARY KEY,
stud_name VARCHAR(80) NOT NULL,
stud_grade CHAR(1) NOT NULL,
stud_country VARCHAR(80) NOT NULL,
course_id int NOT NULL
);

KURSTABEL:

opprett bordkurs
(
course_id seriell PRIMÆR NØKKEL,
kursnavn VARCHAR(80) NOT NULL
);

Nå vil vi sette inn noen data i "kurs"-tabellen ved å bruke INSERT INTO-setningen som følger:

INSERT INTO course(course_name)
VALUES
('Datamaskin'),
('Mekanisk'),
('Sivil'),
('Elektrisk');

Illustrer resultatet av INSERT-setningen ovenfor ved å bruke følgende SQL-setning og øyeblikksbilde.

velgfra kurs;

Nå vil vi sette inn noen data i 'student'-tabellen ved å bruke INSERT INTO-setningen som følger:

INSERT INTO student(stud_name,stud_grade,stud_country,course_id)
VALUES
('Smith','A','USA',1),
('Johnson','B','USA',2),
('Williams','C','USA',3),
('Jones','C','Canada',1),
('Brown','B','Canada',2),
('Davis','A','Canada',3),
('Aarnav','A','India',1),
('Aarush','B','India',2),
('Aayush','C','India',3),
('Abdul','C','UAE',1),
('Ahmed','A','UAE',3),
('Ying', 'A','Kina',1),
('Yue','B','China',2),
('Feng', 'C','China',3),
('Mian','C','Sør-Korea',1),
('Fei','B','Sør-Korea',2),
('Hong','A','Sør-Korea',3);

Illustrer resultatet av INSERT-setningen ovenfor ved å bruke følgende SQL-setning og øyeblikksbilde.

velgfra student;

"SELECT c.course_name AS kursnavn, s.stud_name AS studentnavn"
FRA kurs c HØYRE BLI MED på student s ON c.course_id=s.course_id
BESTILL INNEN 1;

Illustrer resultatet av utsagnet ovenfor ved å bruke følgende øyeblikksbilde.

I eksemplet ovenfor har det resulterende øyeblikksbildet hver rad som en separat oppføring for kurset som samsvarer med studentens kurs.

Vi kan sette sammen elevnavnene ved å bruke funksjonen STRING_AGG() ved å endre SQL-setningen ovenfor som følger:

SELECT
"crs.course_name AS kursnavn,
""string_agg(stud.stud_name, &39;, &39;) AS-studentliste
"FRA kurs crs
JOIN student stud ON crs.course_id=stud.course_id
GRUPPER ETTER 1
BESTILL INNEN 1;

Illustrer resultatet av utsagnet ovenfor ved å bruke følgende øyeblikksbilde.

SELECT stud_grade, STRING_AGG(stud_name,', ') AS StudentsPerGrade
FRA student
GRUPPE ETTER stud_grade
BESTILL INNEN 1 ;

Illustrer resultatet av utsagnet ovenfor ved å bruke følgende øyeblikksbilde.

I eksemplet ovenfor viser det resulterende øyeblikksbildet oss listen over elevene sammenkoblet med kommaskilletegn som har fått en lignende karakter.

"SELECT STRING_AGG(stud_name, &39;, &39;) AS student_names, stud_country"
FRA student
GRUPPE ETTER stud_country;

Illustrer resultatet av utsagnet ovenfor ved å bruke følgende øyeblikksbilde.

"

I eksemplet ovenfor kan vi se at alle elevene som tilhører samme land er gruppert sammen og sett sammen med et kommaskilletegn

Fordeler

  1. Vi kan kontrollere rekkefølgen på resultatet ved å bruke ORDER BY-klausulen.
  2. PostgreSQL STRING_AGG()-funksjonen returnerer resultatet i strengformat.
  3. Vi kan bruke STRING_AGG()-funksjonen til å sette sammen alle strenger og legge til et skilletegn eller skilletegn mellom dem.
  4. PostgreSQL STRING_AGG() støtter ulike typer skilletegn eller skilletegn og inkluderer ikke skilletegn eller skilletegn på slutten av strengen.

Konklusjon

Vi håper fra artikkelen ovenfor at du har forstått hvordan du bruker PostgreSQL STRING_AGG()-funksjonen og hvordan PostgreSQL STRING_AGG()-funksjonen fungerer. Vi har også lagt til flere eksempler på PostgreSQL STRING_AGG()-funksjonen for å forstå den i detalj.

Hjelp utviklingen av nettstedet, del artikkelen med venner!