Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the breadcrumb-navxt domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/devtools/public_html/blog/wp-includes/functions.php on line 6131

Deprecated: A função WP_Dependencies->add_data() foi chamada com um argumento que está obsoleto desde a versão 6.9.0! Os comentários condicionais do IE são ignorados por todos os navegadores compatíveis. in /home/devtools/public_html/blog/wp-includes/functions.php on line 6131
Concatenando campos no MySQL

Concatenando campos no MySQL

A matéria de hoje trata um assunto relativamente simples para que já tem algum conhecimento sobre SQL, mas em virtude do blog ter visitantes com todos os níveis de conhecimento, vamos abordar a função de concatenação no MySQL.

Concatenar campos nada mais é que junta-los a fim de demonstra-los somente em uma coluna, vamos a um exemplo:

1 – Demonstrar somente em uma coluna o nome da cidade seguida da unidade federativa.

 select concat(cidade.nome, '-' , estado.sigla)  
 from cidade inner join estado on cidade.id_uf = estado.id_uf 
 Results  
 Cuiabá - MT  
 São Paulo - SP  
 Rio de Janeiro - RJ  

Com o concat podemos unir informações de diferentes tipos de dados, varchar, double, date dentro outros, com uma ressalva somente para o encoding, Latin concatenado com UF8 possivelmente dará o erro: Illegal mix of collations, tendo que haver uma conversão forçada dos dados concatenados.

Além do concat, qual temos que apresentar repetidamente qual será o separador, temos concat_ws, que definimos o separador uma única vez, este é definindo na primeira expressão da função e é assumido para todas as colunas estipuladas pela condição select, vejamos mais um exemplo:

2 – Concatenar com o separador ; (Ponto é vírgula) o código do funcionário, nome e local de trabalho.

 select concat_ws(';',codigo, nome, local_trabalho)  
 from trabalhador;
 Results  
 01;Fabiano Abreu;Desenvolvimento  
 02;Everton;Desenvolvimento  

O concat_ws até tempos atrás era desconhecido para mim, o que me ocasionou grande revolta (:d) pois constantemente tenho que desenvolver relatórios em formato csv (Para serem abertos no excel), logo, concatenava: coluna ; coluna ; coluna ;…. sendo que com o ws declaro somente uma vez o ; e todas as concatenações estavam feitas.

Outro comando interessante no nicho concat é o group_concat, com ele concatenamos linhas ao invés de colunas, transformando o resultado das linhas em uma única coluna, vejamos:

3 – Demonstrar somente em uma linha todos os códigos de produtos da categoria frios.

 select group_concat(codigo_produto)  
 from produtos  
 where categoria = 'Frios';  
 Results  
 1,7,25,78...  

Bom pessoal, espero que as dicas tenham sido mais uma vez úteis e, sugestões, críticas ou elogios serão bem vindos.

Grande abraços.

20 comentários em “Concatenando campos no MySQL”

  1. Ola Fabiano, preciso de uma orientação, é possível concatenar variável no comando Select?

    por exemplo:

    minha variável $woperador recebe do banco de dados o nome do operador logado.

    E em uma pagina para exibir os resultados de um filtro tenho a seguinte instrução:

    case "u10": $usersSql = "Select id,fullname,username,email,ip from users where super = 0 AND `delete` = '0' AND `opnome` = 'OperadorMaster' ORDER BY id DESC Limit 10";

    nesta instrução onde esta o 'OperadorMaster' quero subistituir pela variável… é possível?

  2. Olá Alex,

    Possuo pouco conhecimento em programação front-end, mas creio que seja totalmente provável o que deseja, pois, se já possui a informação em uma variável, é só compará-la na instrução.

    Grande abraço, e obrigado pela visita.

  3. Você pode utilizar o comando rpad, ou lpad, representando direita e esquerda, respectivamente.

    SELECT RPAD('descricao',30,' ')

    Você pode especificar que será complementado com espaços, como no exemplo acima, mas fica a seu critério o "complemento".

    Abraços.

Deixe um comentário