mysql concat group_concat functions with examples
Este tutorial explica como usar MySQL CONCAT com funções Select e GROUP_CONCAT com sintaxe e exemplos práticos:
CONCAT é uma função String suportada pelo MySQL para combinar ou juntar duas ou mais Strings e retornar como um único valor. O nome CONCAT vem do verbo concatenação, que significa juntar 2 ou mais entidades.
Neste tutorial, aprenderemos o uso de CONCAT com exemplos de consulta e outras variações da função CONCAT fornecida pelo MySQL.
O que você aprenderá:
Função MySQL CONCAT
Sintaxe:
A sintaxe da função CONCAT é direta. Ele contém apenas uma lista separada por vírgulas das Strings que precisam ser unidas.
CONCAT(string1, string2, ------ stringN)Os tipos de entrada e saída esperados pela função CONCAT são Strings. Mesmo se for fornecido com números, a saída final será String.
Por exemplo:
# 1) Com tipos de entrada como Strings.
SELECT CONCAT('string1', 'string2'); //Output string1string2#dois) Com entrada como números / números de ponto flutuante.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342Usando CONCAT com instruções SELECT
CONCAT é mais amplamente usado junto com as consultas SELECT, onde pode combinar dados de 2 ou mais colunas em uma única coluna.
Um exemplo clássico pode ser, suponha que temos uma tabela que possui colunas separadas para os campos firstName e lastName. Portanto, ao exibir dados, suponha que seja o desejo de mostrar FullName em vez de firstName e lastName. Podemos fazer uso de CONCAT e exibir os dados selecionados de acordo.
Vamos ver isso em ação.
teste móvel perguntas e respostas da entrevista para experientes
Primeiro, crie uma tabela de Aluno com os campos - id, nome, sobrenome, idade, data de nascimento e departamento.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));Insira alguns dados fictícios na tabela.
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');Agora, escreva uma consulta SELECT para obter um nome completo como uma string concatenada combinando o nome e o sobrenome.
SELECT CONCAT(fname,lname) as fullName from student//Resultado
| nome completo |
|---|
| DarrenStill |
| AbhishekKumar |
| AmitSingh |
| StevenJohnson |
| KartikShamungam |
Como você pode ver na saída acima, não há espaçamento entre o nome e o sobrenome, o que o torna ilegível. Podemos adicionar espaçamento atualizando a função CONCAT para ter um caractere de espaço extra como uma string a ser concatenada.
SELECT CONCAT(fname, ' ', lname) as fullName from studentIsso garantiria que, com cada entrada, você teria um espaçamento extra entre elas.
Usando CONCAT com GROUP
O MySQL fornece outra função chamada GROUP_CONCAT.
É semelhante a CONCAT, mas difere na maneira como CONCAT é usado para combinar valores em colunas, enquanto a função GROUP_CONCAT é usada principalmente para concatenar valores em linhas.
Sintaxe 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;Então, na função GROUP_CONCAT, você pode ver:
- col_name: Esta é a coluna com a qual você deseja concatenar. Existe uma cláusula DISTINCT opcional para evitar valores repetidos.
- ORDENAR POR: A cláusula ORDER BY é usada para especificar a ordem na lista concatenada e é opcional.
- SEPARADOR: Esta é novamente uma cláusula opcional que pode ser usada para definir um separador personalizado entre os valores concatenados. Por padrão, a vírgula (,) é o separador.
Exemplos MySQL GROUP_CONCAT
No exemplo da tabela do aluno acima, suponha que queremos descobrir uma lista de departamentos concatenados .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEENa consulta acima,
- A saída contém uma lista separada por vírgulas de todos os departamentos disponíveis na coluna de departamentos.
- Além disso, existem valores repetidos ( Por exemplo, ENGINEERING), pois não especificamos uma cláusula DISTINCT.
Vamos tentar o mesmo exemplo com a cláusula DISTINCT:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEEIsso apenas retornaria os valores distintos da coluna do departamento.
Agora adicione um separador personalizado como ‘|’ e uma cláusula ORDER BY para que os nomes dos departamentos sejam classificados em ordem crescente
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEEEntão, na consulta acima,
- Os nomes dos departamentos são classificados em ordem crescente.
- Nenhum valor de repetição é retornado.
- O separador é alterado de ‘,’ para ‘| ‘.
Vamos ver outro exemplo para listar os valores concatenados dos alunos em cada departamento.
Aqui não queremos tão DISTINTOS quanto 2 alunos em um departamento podem ter o mesmo nome.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department// Resultado
| departamento | alunos |
|---|---|
| CONTABILIDADE | Abhishek |
| ENGENHARIA | Amit | Darren |
| RECURSOS HUMANOS | Steven |
| ESTAGIÁRIO | Kartik |
Combinando CONCAT e GROUP_CONCAT
No exemplo acima, suponha que desejamos mostrar os valores CONCATENADOS de nome e sobrenome junto com cada departamento.
Para conseguir isso, podemos usar CONCAT dentro do comando GROUP_CONCAT.
Vamos ver isso em ação abaixo:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department//Resultado
| departamento | alunos |
|---|---|
| CONTABILIDADE | Abhishek Kumar |
| ENGENHARIA | Amit Singh | Darren Still |
| RECURSOS HUMANOS | Steven Johnson |
| ESTAGIÁRIO | Kartik shamungam |
Tratamento de valores NULL com CONCAT
CONCAT espera argumentos String e retorna a saída como String.
Se qualquer entrada para a função CONCAT for NULL, a saída também será NULL.
SELECT CONCAT('string1','string2', NULL); //Output NULLPara lidar com valores NULL, você pode usar uma instrução ifNull dentro da função CONCAT que garantiria um valor padrão ou em branco no caso do valor NULL da coluna.
Suponha que temos 2 Strings e 1 valor NULL para CONCAT, como o exemplo acima.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2helloNa consulta acima, adicionamos uma função ifNull em torno do valor NULL (ou uma coluna que poderia ser NULL) - se a correspondência NULL for bem-sucedida, ela retornaria ‘hello’ senão o valor real da coluna.
Portanto, na saída, você pode ver que para a string NULL, ‘hello’ é impresso.
perguntas frequentes
P # 1) Como faço para mesclar colunas no MySQL?
Responda: O MySQL fornece uma função CONCAT para combinar ou mesclar 2 ou mais colunas de uma ou mais tabelas e retornar os valores mesclados na saída.
P # 2) Onde e quando devo usar o método concat no MySQL?
Responda: O método CONCAT é geralmente usado na exibição dos resultados da consulta em que você deseja juntar 2 ou mais colunas e representá-las como uma única coluna.
Por exemplo, suponha que você tenha uma tabela que contém o nome e o sobrenome como colunas separadas e deseja exibi-los como uma única entidade chamada fullName - então você pode usar a função CONCAT para mesclar os valores da coluna do nome e do sobrenome e exibi-los juntos como uma única coluna.
P # 3) O que é MySQL GROUP_CONCAT?
Responda: Semelhante a CONCAT, MySQL GROUP_CONCAT também é usado para concatenar valores em uma tabela. A diferença aqui é que enquanto CONCAT é usado para combinar valores em colunas, GROUP_CONCAT oferece a capacidade de combinar valores em linhas.
Também é importante observar que GROUP_CONCAT e CONCAT podem ser combinados para retornar os resultados desejados.
GROUP_CONCAT é geralmente usado em cenários onde você deseja GRUPAR ou combinar valores nas linhas. Por exemplo - você tem uma tabela de produtos com o nome e a categoria do produto e deseja listar todos os produtos de uma determinada categoria como valores separados por vírgula - então você pode usar GROUP_CONCAT.
Consulta:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryNameP # 4) Como posso especificar um separador usando o comando CONCAT?
Responda: Com CONCAT, você pode especificar o separador como uma string separada a ser concatenada.
Por exemplo: Suponha que você queira usar ‘|’ como separador, então, no comando CONCAT, você pode especificar esta string entre os nomes das colunas que está concatenando.
SELECT CONCAT(fname, '| ', lname) as fullName from studentP # 5) Qual é a diferença entre os comandos CONCAT e CONCAT_WS?
Responda: CONCAT_WS é outra variação de CONCAT fornecida pelo MySQL, que permite ao usuário especificar um separador para as colunas que estão sendo concatenadas.
É preferível ao CONCAT em situações em que você deseja mesclar mais colunas e usar o mesmo separador para todas as colunas concatenadas.
Exemplo: Suponha que haja um aluno da tabela com campos - fname, lname e endereço.
Agora queremos concatenar todos esses três campos e separar por ‘|’.
Usando CONCAT , precisamos especificar o separador como uma string separada a ser concatenada.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from studentEnquanto com CONCAT_WS você só precisa especificar o separador uma vez.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from studentConclusão
Neste tutorial, aprendemos sobre a função CONCAT do MySQL e seu uso. Essa função geralmente é muito útil ao exibir os resultados da consulta para mesclar valores em diferentes colunas.
Também aprendemos sobre 2 variações diferentes da função CONCAT - uma é concatenar com um separador usando CONCAT_WS e outra é concatenar valores de linhas usando a função MySQL GROUP_CONCAT.
Leitura recomendada
- Tutorial do MySQL JOIN: interno, externo, cruzado, esquerdo, direito e próprio
- MySQL UNION - Tutorial abrangente com exemplos de união
- Formato de data do MySQL e funções de carimbo de data / hora com exemplos
- MySQL Insert Into Table - sintaxe e exemplos de instruções de inserção
- Tutorial de instrução de atualização do MySQL - Atualizar sintaxe de consulta e exemplos
- Tutorial de criação de visualização do MySQL com exemplos de código
- Tutorial de funções / métodos C # com exemplos de código