¡Ayuda al desarrollo del sitio, compartiendo el artículo con amigos!

Introducción a PostgreSQL STRING_AGG()

PostgreSQL admite varios tipos de funciones agregadas. La función STRING_AGG() es una de las funciones agregadas que se utiliza para concatenar la lista de cadenas y agregará un lugar a un símbolo delimitador o un separador entre todas las instrumentos de cuerda. El separador o un símbolo delimitador no se incluirán al final de la cadena de salida. La función STRING_AGG() de PostgreSQL es compatible con la versión 9.0 de PostgreSQL, que se usa para realizar la opción agregada relacionada con la cadena.Podemos usar varios tipos de separadores o símbolos delimitadores para concatenar las cadenas.

Sintaxis

Considere la siguiente sintaxis:

STRING_AGG ( expresión, separador|delimitador (ordenar_por) )

Explicación:

La función STRING_AGG() toma la cláusula ORDER BY de entrada y es opcional y otros dos argumentos de la siguiente manera:

  1. expresión: Esta es una cadena de caracteres que es cualquier expresión válida.
  2. separador/delimitador: Esto define el separador/delimitador que se utilizará para la concatenación de cadenas.

La cláusula ORDER BY es una cláusula opcional que define el orden de los resultados de cadenas concatenadas.

ORDER BY tiene la siguiente sintaxis:

ORDENAR POR expresión1 {ASC - DESC}, (… )

¿Cómo funciona la función STRING_AGG() de PostgreSQL?

  1. La expresión de entrada necesaria debe ser un tipo de datos de cadena de caracteres. También podemos usar otros tipos de datos, pero solo debemos asegurarnos de haber convertido explícitamente otros tipos de datos en el tipo de datos de la cadena de caracteres.
  2. El STRING_AGG() de PostgreSQL nos devuelve el resultado en tipo cadena.
  3. El STRING_AGG() generalmente se usa con la cláusula GROUP BY como usamos otras funciones agregadas de PostgreSQL como MIN(), MAX(), AVG(), SUM() y COUNT() etc.

Ejemplos para implementar la función STRING_AGG() de PostgreSQL

Crearemos una tabla llamada 'estudiante' y 'curso' usando la declaración CREATE TABLE de la siguiente manera:

TABLA DE ESTUDIANTE:

crear tabla estudiante
(
stud_id serial CLAVE PRIMARIA,
stud_name VARCHAR(80) NO NULO,
stud_grade CHAR(1) NO NULO,
stud_country VARCHAR(80) NO NULO,
id_del_curso int NO NULO
);

TABLA DE CURSO:

crear curso de mesa
(
id_curso serial CLAVE PRIMARIA,
nombre_del_curso VARCHAR(80) NO NULL
);

Ahora, insertaremos algunos datos en la tabla del "curso" usando la declaración INSERT INTO de la siguiente manera:

INSERTAR EN el curso(nombre_del_curso)
VALORES
('Computadora'),
('Mecánica'),
('Civil'),
('Electricidad');

Ilustre el resultado de la instrucción INSERT anterior utilizando la siguiente instrucción SQL y la instantánea.

seleccionedel curso;

Ahora, insertaremos algunos datos en la tabla 'estudiante' usando la declaración INSERT INTO de la siguiente manera:

INSERT INTO estudiante(stud_name,stud_grade,stud_country,course_id)
VALORES
('Smith','A','EE.UU.',1),
('Johnson','B','EE.UU.',2),
('Williams','C','EE.UU.',3),
('Jones','C','Canadá',1),
('Marrón','B','Canadá',2),
('Davis','A','Canadá',3),
('Aarnav','A','India',1),
('Aarush','B','India',2),
('Aayush','C','India',3),
('Abdul','C','EAU',1),
('Ahmed','A','EAU',3),
('Ying', 'A', 'China', 1),
('Yue','B','China',2),
('Feng', 'C', 'China', 3),
('Mian','C','Corea del Sur',1),
('Fei','B','Corea del Sur',2),
('Hong','A','Corea del Sur',3);

Ilustre el resultado de la instrucción INSERT anterior utilizando la siguiente instrucción SQL y la instantánea.

seleccionedel estudiante;

"SELECCIONE c.course_name COMO nombre del curso, s.stud_name COMO nombre del estudiante"
DESDE el curso c ÚNASE A LA DERECHA estudiante s EN c.course_id=s.course_id
ORDENAR POR 1;

Ilustre el resultado de la declaración anterior usando la siguiente instantánea.

En el ejemplo anterior, la instantánea resultante tiene cada fila como una entrada separada para el curso coincidente con el curso del estudiante.

Podemos concatenar los nombres de los estudiantes usando la función STRING_AGG() modificando la instrucción SQL anterior de la siguiente manera:

SELECCIONAR
"crs.course_name COMO nombre del curso,
""string_agg(stud.stud_name, &39;, &39;) AS lista de estudiantes
"DESDE curso crs
ÚNASE al estudiante stud EN crs.course_id=stud.course_id
GRUPO POR 1
ORDENAR POR 1;

Ilustre el resultado de la declaración anterior usando la siguiente instantánea.

SELECT stud_grade, STRING_AGG(stud_name,', ') AS EstudiantesPorGrado
DE estudiante
GRUPO POR stud_grade
ORDENAR POR 1 ;

Ilustre el resultado de la declaración anterior usando la siguiente instantánea.

En el ejemplo anterior, la instantánea resultante nos muestra la lista de los estudiantes concatenados por el separador de coma que obtuvieron una calificación similar.

"SELECT STRING_AGG(stud_name, &39;, &39;) AS student_names, stud_country"
DE estudiante
GRUPO POR stud_country;

Ilustre el resultado de la declaración anterior usando la siguiente instantánea.

"

En el ejemplo anterior, podemos ver que todos los estudiantes que pertenecen al mismo país están agrupados y concatenados por una coma separadora

Ventajas

  1. Podemos controlar el orden del resultado usando la cláusula ORDER BY.
  2. La función STRING_AGG() de PostgreSQL devuelve el resultado en formato de cadena.
  3. Podemos usar la función STRING_AGG() para concatenar todas las cadenas y agregar un símbolo delimitador o separador entre ellas.
  4. PostgreSQL STRING_AGG() admite varios tipos de símbolo delimitador o separador y no incluye el símbolo delimitador o separador al final de la cadena.

Conclusión

Esperamos que con el artículo anterior haya entendido cómo usar la función STRING_AGG() de PostgreSQL y cómo funciona la función STRING_AGG() de PostgreSQL. Además, hemos agregado varios ejemplos de la función STRING_AGG() de PostgreSQL para comprenderla en detalle.

¡Ayuda al desarrollo del sitio, compartiendo el artículo con amigos!