Pomozte vývoji webu a sdílení článku s přáteli!

Úvod do PostgreSQL STRING_AGG()

PostgreSQL podporuje různé druhy agregačních funkcí. Funkce STRING_AGG() je jednou z agregačních funkcí, která se používá ke zřetězení seznamu řetězců a přidá místo k oddělovacímu symbolu nebo oddělovači mezi všechny struny. Oddělovač nebo oddělovací symbol nebude zahrnut na konci výstupního řetězce. Funkce PostgreSQL STRING_AGG() je podporována od verze PostgreSQL 9.0, která se používá k provedení agregační možnosti související s řetězcem.Pro zřetězení řetězců můžeme použít různé typy oddělovačů nebo oddělovacích symbolů.

Syntaxe

Zvažte následující syntaxi:

STRING_AGG ( výraz, oddělovač|oddělovač (objednat_by) )

Vysvětlení:

Funkce STRING_AGG() přebírá vstup klauzule ORDER BY je volitelná a další dva argumenty jsou následující:

  1. expression: Toto je řetězec znaků, který je platným výrazem.
  2. separator/delimiter: Toto definuje oddělovač/oddělovač, který bude použit pro zřetězení řetězců.

Klauzule ORDER BY je volitelná klauzule, která definuje pořadí výsledků zřetězených řetězců.

Objednávka BY má následující syntaxi:

ORDER BY expression1 {ASC - DESC}, (…

Jak funguje funkce PostgreSQL STRING_AGG()?

  1. Potřebný vstupní výraz by měl být datový typ znakového řetězce. Můžeme použít i jiné datové typy, ale pouze se musíme ujistit, že jsme explicitně přetypovali jiné datové typy na datový typ znakového řetězce.
  2. PostgreSQL STRING_AGG() nám vrací výsledek v řetězcovém typu.
  3. STRING_AGG() se obecně používá s klauzulí GROUP BY, stejně jako používáme jiné agregační funkce PostgreSQL, jako je MIN(), MAX(), AVG(), SUM() a COUNT() atd.

Příklady implementace funkce PostgreSQL STRING_AGG()

Vytvoříme tabulku s názvem ‚student‘ a ‚kurz‘ pomocí příkazu CREATE TABLE takto:

STŮL STUDENTŮ:

vytvořit stůl student
(
stud_id serial 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
);

TABULKA KURZŮ:

kurz vytvoření stolu
(
serial_id serial PRIMARY KEY,
název_kurzu VARCHAR(80) NOT NULL
);

Nyní vložíme některá data do tabulky ‚kurz‘ pomocí příkazu INSERT INTO takto:

INSERT INTO course(course_name)
VALUES
('Počítač'),
('Mechanické'),
('Civil'),
('Elektrický');

Ilustrujte výsledek výše uvedeného příkazu INSERT pomocí následujícího příkazu SQL a snímku.

vybertez kurzu;

Nyní vložíme některá data do tabulky ‚student‘ pomocí příkazu INSERT INTO takto:

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', 'China',1),
('Yue','B','China',2),
('Feng', 'C', 'China',3),
('Mian','C','Jižní Korea',1),
('Fei','B','Jižní Korea',2),
('Hong','A','Jižní Korea',3);

Ilustrujte výsledek výše uvedeného příkazu INSERT pomocí následujícího příkazu SQL a snímku.

vyberteod studenta;

"SELECT c.course_name AS název kurzu, s.stud_name AS jméno studenta"
Z kurzu c SPRÁVNĚ PŘIPOJTE studenty NA c.course_id=s.course_id
OBJEDNEJTE DO 1;

Výsledek výše uvedeného tvrzení ilustrujte pomocí následujícího snímku.

Ve výše uvedeném příkladu má výsledný snímek každý řádek jako samostatnou položku pro odpovídající kurz s kurzem studenta.

Jména studentů můžeme zřetězit pomocí funkce STRING_AGG() úpravou výše uvedeného příkazu SQL takto:

SELECT
"crs.course_name AS název kurzu,
""string_agg(stud.stud_name, &39;, &39;) AS seznam studentů
"Z kurzu crs
PŘIPOJTE SE ke studentskému studu NA crs.course_id=stud.course_id
GROUP BY 1
OBJEDNEJTE DO 1;

Výsledek výše uvedeného tvrzení ilustrujte pomocí následujícího snímku.

SELECT stud_grade, STRING_AGG(stud_name,', ') AS StudentsPerGrade
OD studenta
GROUP BY stud_grade
OBJEDNEJTE DO 1 ;

Výsledek výše uvedeného tvrzení ilustrujte pomocí následujícího snímku.

Ve výše uvedeném příkladu nám výsledný snímek ukazuje seznam studentů zřetězených pomocí oddělovače čárek, kteří mají podobnou známku.

"SELECT STRING_AGG(stud_name, &39;, &39;) AS students_names, stud_country"
OD studenta
GROUP BY stud_country;

Výsledek výše uvedeného tvrzení ilustrujte pomocí následujícího snímku.

"

Ve výše uvedeném příkladu vidíme, že všichni studenti ze stejné země jsou seskupeni a zřetězeni oddělovačem čárkou

Výhody

  1. Pořadí výsledku můžeme ovládat pomocí klauzule ORDER BY.
  2. Funkce PostgreSQL STRING_AGG() vrací výsledek ve formátu řetězce.
  3. Funkci STRING_AGG() můžeme použít ke zřetězení všech řetězců a přidat mezi ně oddělovací symbol nebo oddělovač.
  4. PostgreSQL STRING_AGG() podporuje různé typy oddělovacích symbolů nebo oddělovačů a nezahrnuje oddělovací symbol ani oddělovač na konci řetězce.

Závěr

Doufáme, že z výše uvedeného článku jste pochopili, jak používat funkci PostgreSQL STRING_AGG() a jak funguje funkce PostgreSQL STRING_AGG(). Také jsme přidali několik příkladů funkce PostgreSQL STRING_AGG(), abychom ji podrobně porozuměli.

Pomozte vývoji webu a sdílení článku s přáteli!