mysql concat group_concat functions with examples
Aquest tutorial explica com utilitzar MySQL CONCAT amb funcions Select i GROUP_CONCAT amb sintaxi i exemples pràctics:
CONCAT és una funció de cadenes suportada per MySQL per combinar o unir dues o més cadenes i tornar com a valor únic. El nom CONCAT prové del verb concatenació, que significa unir 2 o més entitats.
En aquest tutorial, aprendrem l’ús de CONCAT amb exemples de consultes i altres variacions de la funció CONCAT proporcionada per MySQL.
Què aprendreu:
Funció MySQL CONCAT
Sintaxi:
La sintaxi de la funció CONCAT és senzilla. Simplement conté una llista separada per comes de les cadenes que cal unir.
CONCAT(string1, string2, ------ stringN)
Tant els tipus d'entrada com de sortida esperats per la funció CONCAT són cadenes. Fins i tot si es subministra amb números, la sortida final serà String.
Per exemple:
# 1) Amb tipus d'entrada com a cadenes.
SELECT CONCAT('string1', 'string2'); //Output string1string2
# 2) Amb l'entrada com a números / números de coma flotant.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342
Utilitzant CONCAT amb sentències SELECT
CONCAT s’utilitza més al costat de les consultes SELECT, on pot combinar dades de 2 o més columnes en una sola columna.
Un exemple clàssic pot ser, suposem que tenim una taula que té columnes separades per als camps firstName i lastName. Per tant, mentre es mostren les dades, suposem que és el desig de mostrar el nom complet en lloc de nom i cognom. Podem fer ús de CONCAT i mostrar les dades seleccionades en conseqüència.
Vegem això en acció.
preguntes i respostes de proves escrites per a analistes de negocis
En primer lloc, creeu una taula d'estudiant amb camps: identificador, nom, cognom, edat, data de naixement i departament.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Inseriu algunes dades fictícies a la taula.
INSERT INTO student values (1,'Darren', 'Still', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 'Kumar', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 'Singh', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 'Johnson', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 'Shamungam', 20, '2000-05-12', 'TRAINEE');
Ara, escriviu una consulta SELECT per obtenir un nom complet com una cadena concatenada que combina el nom i el cognom.
SELECT CONCAT(fname,lname) as fullName from student
// Sortida
nom complet |
---|
DarrenStill |
AbhishekKumar |
AmitSingh |
StevenJohnson |
KartikShamungam |
Com podeu veure a la sortida anterior, no hi ha cap espaiat entre el nom i el cognom, cosa que la fa il·legible. Podem afegir espaiats actualitzant la funció CONCAT per tenir un caràcter d’espai addicional com a cadena a concatenar.
SELECT CONCAT(fname, ' ', lname) as fullName from student
D’aquesta manera s’asseguraria que, amb cada entrada, tinguéssiu un espaiat addicional.
Utilitzant CONCAT amb GROUP
MySQL proporciona una altra funció anomenada GROUP_CONCAT.
És similar a CONCAT, però difereix en la forma en què s’utilitza CONCAT per combinar valors entre columnes, mentre que la funció GROUP_CONCAT s’utilitza principalment per concatenar valors entre files.
Sintaxi MySQL GROUP_CONCAT
SELECT col1, col2, ..., colN GROUP_CONCAT ( [DISTINCT] col_name1 [ORDER BY clause] [SEPARATOR str_val] ) FROM table_name GROUP BY col_name2;
Per tant, a la funció GROUP_CONCAT podeu veure:
- nom_col: Aquesta és la columna amb la qual voleu concatenar. Hi ha una clàusula DISTINCT opcional per evitar la repetició de valors.
- DEMANAT PER: La clàusula ORDER BY s’utilitza per especificar l’ordre dins de la llista concatenada i és opcional.
- SEPARADOR: Aquesta és de nou una clàusula opcional que es pot utilitzar per definir un separador personalitzat entre els valors concatenats. Per defecte, coma (,) és el separador.
MySQL GROUP_CONCAT Exemples
A l’exemple anterior de la taula Student, suposem que volem esbrineu una llista de departaments concatenats .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
A la consulta anterior,
- La sortida conté una llista separada per comes de tots els departaments disponibles a la columna de departaments.
- A més, hi ha valors que es repeteixen ( Per exemple, ENGINEERING) ja que no hem especificat cap clàusula DISTINCT.
Provem el mateix exemple amb la clàusula DISTINCT:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
Això només retornaria els diferents valors de la columna del departament.
Ara afegiu un separador personalitzat com a clàusula '|' i ORDRE BY per ordenar els noms dels departaments en ordre ascendent
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEE
Per tant, en la consulta anterior,
- Els noms dels departaments s’ordenen per ordre ascendent.
- No es retorna cap valor repetitiu.
- El separador es canvia de ',' a '| ‘.
A veure un altre exemple per enumerar els valors concatenats dels estudiants de cada departament.
Aquí no voldríem tan DISTINGUT ja que 2 estudiants d'un departament podrien tenir el mateix nom.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department
// Sortida
departament | estudiants |
---|---|
COMPTABILITAT | Abhishek |
ENGINYERIA | Amit | Darren |
RECURSOS HUMANS | Steven |
APRENENT | Kartik |
Combinant CONCAT i GROUP_CONCAT
A l'exemple anterior, suposem que volem mostrar els valors CONCATENATED de nom i cognom juntament amb cada departament.
Per aconseguir-ho, podem utilitzar CONCAT dins de l’ordre GROUP_CONCAT.
Vegem això en acció a continuació:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department
// Sortida
departament | estudiants |
---|---|
COMPTABILITAT | Abhishek kumar |
ENGINYERIA | Amit Singh | Darren Still |
RECURSOS HUMANS | Steven Johnson |
APRENENT | Kartik shamungam |
Gestió de valors NULS amb CONCAT
CONCAT espera arguments de cadena i retorna la sortida com a cadena.
Si qualsevol entrada a la funció CONCAT és NULA, la sortida també seria NULA.
SELECT CONCAT('string1','string2', NULL); //Output NULL
Per gestionar els valors NULL, podeu fer servir una sentència ifNull dins de la funció CONCAT que asseguraria un valor per defecte o en blanc en cas del valor NULL de la columna.
Suposem que tenim 2 cadenes i 1 valor NUL a CONCAT, com l'exemple anterior.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2hello
A la consulta anterior, hem afegit una funció ifNull que envolta el valor NULL (o una columna que podria ser NULA); si la coincidència NULA té èxit, retornaria 'hola' en cas contrari, el valor de la columna real.
Així doncs, a la sortida, podeu veure per a la cadena NULL que s’imprimeix ‘hola’
Preguntes freqüents
P # 1) Com puc combinar columnes a MySQL?
Resposta: MySQL proporciona una funció CONCAT per combinar o combinar 2 o més columnes d'una o més taules i retornar els valors combinats a la sortida.
Q # 2) On i quan he d'utilitzar el mètode concat a MySQL?
Resposta: El mètode CONCAT s'utilitza generalment per mostrar els resultats de les consultes on voleu unir 2 o més columnes i representar-les com una sola columna.
Per exemple, suposem que teniu una taula que conté el nom i el cognom com a columnes separades i voleu mostrar-les com una única entitat anomenada fullName; llavors podeu utilitzar la funció CONCAT per combinar els valors de la columna de nom i cognom i mostrar-los junts com una sola columna.
P # 3) Què és MySQL GROUP_CONCAT?
Resposta: De manera similar a CONCAT, MySQL GROUP_CONCAT també s’utilitza per concatenar els valors d’una taula. La diferència aquí és que CONCAT s’utilitza per combinar valors entre columnes, GROUP_CONCAT us proporciona la possibilitat de combinar valors entre files.
També és important tenir en compte que tant GROUP_CONCAT com CONCAT es poden combinar per obtenir els resultats desitjats.
GROUP_CONCAT s'utilitza generalment en escenaris on voleu agrupar o combinar valors entre files. Per exemple - teniu una taula de productes amb el nom i la categoria del producte i voleu llistar tots els productes amb una categoria determinada com a valors separats per comes; aleshores podeu utilitzar GROUP_CONCAT.
Consulta:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryName
Q # 4) Com puc especificar un separador mitjançant l'ordre CONCAT?
Resposta: Amb CONCAT, podeu especificar el separador com una cadena independent que cal concatenar.
Per exemple: Suposem que voleu utilitzar '|' com a separador i, a l'ordre CONCAT, podeu especificar aquesta cadena entre els noms de columna que esteu concatenant.
SELECT CONCAT(fname, '| ', lname) as fullName from student
Q # 5) Quina diferència hi ha entre les ordres CONCAT i CONCAT_WS?
Resposta: CONCAT_WS és una altra variant de CONCAT proporcionada per MySQL, que permet a l'usuari especificar un separador per a les columnes que s'estan concatenant.
Això es prefereix a CONCAT en situacions en què es vulgui combinar més nombre de columnes i utilitzar el mateix separador per a totes les columnes concatenades.
Exemple: Suposem que hi ha un estudiant de taula amb camps: fname, lname i adreça.
Ara volem concatenar tots aquests tres camps i separar-los per '|'.
Utilitzant CONCAT , hem d’especificar el separador com una cadena independent que cal concatenar.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from student
Mentre amb CONCAT_WS només caldria especificar el separador una vegada.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from student
Conclusió
En aquest tutorial, hem après sobre la funció MySQL CONCAT i el seu ús. Aquesta funció sol ser molt útil quan es mostren els resultats de la consulta per combinar valors amb diferents columnes.
També hem après sobre dues variacions diferents de la funció CONCAT: una concatenació amb un separador mitjançant CONCAT_WS i una altra concatenació de valors de files mitjançant la funció MySQL GROUP_CONCAT.
Lectura recomanada
- Tutorial MySQL JOIN: Interior, exterior, creuat, esquerre, dret i autònom
- MySQL UNION: tutorial complet amb exemples d'unió
- Funcions de format de data i marca de temps de MySQL amb exemples
- MySQL Insereix a la taula: insereix sintaxi i exemples de sentències
- Tutorial de la declaració d'actualització de MySQL: actualització de sintaxi i exemples de consulta
- Tutorial MySQL Create View amb exemples de codi
- C # Funcions / Mètodes Tutorial amb exemples de codi