No MariaDB,
CONCAT()
é uma função de string interna que executa uma concatenação de string em seus argumentos. Ele retorna a string que resulta da concatenação de seus argumentos. Concatenação é a operação de unir duas ou mais strings de ponta a ponta.
CONCAT()
aceita um ou mais argumentos, todos os quais são retornados como uma única string concatenada. Sintaxe
A sintaxe fica assim:
CONCAT( str1, str2, ... )
Onde
str1, str2, …
representam os argumentos de string para os quais concatenar. Exemplo
Segue um exemplo básico:
SELECT CONCAT('Homer', 'Jay');
Resultado:
+------------------------+| CONCAT('Homer', 'Jay') |+----------------------------------+| HomerJay |+------------------------+
Neste caso, concatenamos duas strings.
Aqui está novamente, mas desta vez adicionamos um espaço entre:
SELECT CONCAT('Homer', ' ', 'Jay');
Resultado:
+-----------------------------+| CONCAT('Homer', ' ', 'Jay') |+-----------------------------+| Homer Jay |+-----------------------------+
Neste caso, concatenamos três strings.
Aqui está com cinco:
SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson');
Resultado:
+---------------------------------------------+ | CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |+---------------------------- ------------------+| Homer Jay Simpson |+--------------------------------------------- +
Strings binárias
Se algum dos argumentos for uma string binária, o resultado será uma string binária:
SELECT CONCAT(BINARY 'Homer', 'Jay');
Resultado:
+-------------------------------+| CONCAT(BINÁRIO 'Homer', 'Jay') |+------------------------------------------+| HomerJay |+------------------------------------------+
Podemos usar o
COLLATION()
função para verificar o agrupamento do resultado:SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay'));
Resultado:
+------------------------------------------+| COLLATION(CONCAT(BINÁRIO 'Homer', 'Jay')) |+------------------------------------------------ --------+| binário |+------------------------------------------+
Se removermos o
BINARY
operador, obtemos um resultado diferente:SELECT COLLATION(CONCAT('Homer', 'Jay'));
Resultado:
+-----------------------------------+| COLLATION(CONCAT('Homer', 'Jay')) |+---------------------------------- +| utf8_general_ci |+--------------------------------------------------+
Além disso, de acordo com a documentação do MariaDB, os argumentos numéricos são convertidos em sua forma de string binária equivalente. Você pode evitar isso fazendo um cast de tipo explícito (usando
CAST()
ou CONVERT()
). Argumentos nulos
Se algum dos argumentos for
null
, CONCAT()
retorna null
. No entanto, há uma exceção:Quando no modo Oracle (ou seja,
sql_mode=ORACLE
), qualquer null
argumentos são simplesmente ignorados. Primeiro, vamos ver como
CONCAT()
se comporta no modo padrão. Defina nossa sessão para o modo padrão:
SET SESSION sql_mode=DEFAULT;
Agora execute
CONCAT()
com um null
argumento:SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Resultado:
+--------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ --------------+| NULL |+--------------------------------------------+
Como esperado, o resultado énull
.
Agora vamos mudar nossa sessão para o modo Oracle:
SET SESSION sql_mode=ORACLE;
E agora vamos executar oCONCAT()
anterior exemplo novamente:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Resultado:
+--------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ --------------+| Homer Simpson |+--------------------------------------------+
Desta vez ele ignorou onull
argumento e concatenou todos os restantes não-null
argumentos. Se você olhar de perto, verá que ele concatenou os dois espaços, então há um espaço duplo entreHomer
eSimpson
.
Para umnull
-alternativa segura, useCONCAT_WS()
. Essa função ignoranull
valores, mesmo quando não estiver no modo Oracle.
Alternativamente, você pode usarIFNULL()
para fornecer um valor alternativo (string) paranull
valores (como uma string vazia).
Argumento único
ChamandoCONCAT()
com apenas um argumento simplesmente retorna esse argumento:
SELECT CONCAT('Homer');
Resultado:
+-----------------+| CONCAT('Homer') |+-----------------+| Homero |+-----------------+Argumento ausente
ChamandoCONCAT()
sem passar nenhum argumento resulta em um erro:
SELECT CONCAT();
Resultado:
ERRO 1582 (42000):contagem de parâmetro incorreta na chamada para a função nativa 'CONCAT'