MySQL tem o
CONCAT()
função, que permite concatenar duas ou mais strings. A função na verdade permite um ou mais argumentos, mas seu principal uso é concatenar duas ou mais strings. No MySQL (e em qualquer ambiente de programação de computador), a concatenação de strings é a operação de unir strings de caracteres de ponta a ponta.
Aqui está um exemplo:
SELECT CONCAT('Homer', ' ', 'Simpson') AS 'Full Name';
Resultado:
+---------------+ | Full Name | +---------------+ | Homer Simpson | +---------------+
Observe que eu realmente concatenei 3 strings aqui. Eu concatenei o primeiro nome, o sobrenome, mais um espaço.
Se eu não adicionasse o espaço, ficaria assim:
SELECT CONCAT('Homer', 'Simpson') AS 'Full Name';
Resultado:
+--------------+ | Full Name | +--------------+ | HomerSimpson | +--------------+
Que pode ou não ser o resultado que você procura.
Então, se aplicarmos isso a um banco de dados, a consulta pode ser algo assim:
SELECT CONCAT(FirstName, ' ', LastName) AS 'Full Name' FROM Individuals WHERE IndividualId = '1';
Resultado:
+---------------+ | Full Name | +---------------+ | Homer Simpson | +---------------+
Se você estiver concatenando mais de duas strings e precisar de um espaço (ou outro separador), considere usar o
CONCAT_WS()
função. Isso permite que você especifique um separador a ser usado entre cada string. Você só precisa especificar o separador uma vez, e ele é usado em todas as strings concatenadas, evitando que você precise redigitá-lo entre cada string. Argumentos NULL
O
CONCAT()
função retorna NULL
se algum argumento for NULL
. Exemplo:
SELECT CONCAT('Homer', NULL, 'Simpson') AS 'Full Name';
Resultado:
+-----------+ | Full Name | +-----------+ | NULL | +-----------+
Strings binárias vs strings não binárias
A documentação do MySQL afirma:
Se todos os argumentos forem strings não binárias, o resultado será uma string não binária. Se os argumentos incluírem qualquer string binária, o resultado será uma string binária. Um argumento numérico é convertido em sua forma de string não binária equivalente.