MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como CONCAT() funciona no MariaDB


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 o CONCAT() anterior exemplo novamente:
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); 

Resultado:
+--------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ --------------+| Homer Simpson |+--------------------------------------------+ 
Desta vez ele ignorou o null 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 entre Homer e Simpson .

Para um null -alternativa segura, use CONCAT_WS() . Essa função ignora null valores, mesmo quando não estiver no modo Oracle.

Alternativamente, você pode usar IFNULL() para fornecer um valor alternativo (string) para null valores (como uma string vazia).

Argumento único


Chamando CONCAT() com apenas um argumento simplesmente retorna esse argumento:
SELECT CONCAT('Homer'); 

Resultado:
+-----------------+| CONCAT('Homer') |+-----------------+| Homero |+-----------------+

Argumento ausente


Chamando CONCAT() 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'