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í:
- expression: Toto je řetězec znaků, který je platným výrazem.
- 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()?
- 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.
- PostgreSQL STRING_AGG() nám vrací výsledek v řetězcovém typu.
- 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)
('Elektrický');
VALUES
('Počítač'),
('Mechanické'),
('Civil'),
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)
('Hong','A','Jižní Korea',3);
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),
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"
OBJEDNEJTE DO 1;
Z kurzu c SPRÁVNĚ PŘIPOJTE studenty NA c.course_id=s.course_id
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
OBJEDNEJTE DO 1;
"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
Výsledek výše uvedeného tvrzení ilustrujte pomocí následujícího snímku.
SELECT stud_grade, STRING_AGG(stud_name,', ') AS StudentsPerGrade
OBJEDNEJTE DO 1 ;
OD studenta
GROUP BY stud_grade
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"
GROUP BY stud_country;
OD studenta
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
- Pořadí výsledku můžeme ovládat pomocí klauzule ORDER BY.
- Funkce PostgreSQL STRING_AGG() vrací výsledek ve formátu řetězce.
- 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č.
- 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.