sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona CONCAT() en MariaDB

En MariaDB, CONCAT() es una función de cadena incorporada que realiza una concatenación de cadenas en sus argumentos. Devuelve la cadena que resulta de concatenar sus argumentos.

La concatenación es la operación de unir dos o más cadenas de un extremo a otro.

CONCAT() acepta uno o más argumentos, todos los cuales se devuelven como una sola cadena concatenada.

Sintaxis

La sintaxis es así:

CONCAT( str1, str2, ... )

Donde str1, str2, … representan los argumentos de cadena para los cuales concatenar.

Ejemplo

He aquí un ejemplo básico:

SELECT CONCAT('Homer', 'Jay');

Resultado:

+------------------------+
| CONCAT('Homer', 'Jay') |
+------------------------+
| HomerJay               |
+------------------------+

En este caso, concatenamos dos cadenas.

Aquí está de nuevo, pero esta vez agregamos un espacio en el medio:

SELECT CONCAT('Homer', ' ', 'Jay');

Resultado:

+-----------------------------+
| CONCAT('Homer', ' ', 'Jay') |
+-----------------------------+
| Homer Jay                   |
+-----------------------------+

En este caso, concatenamos tres cadenas.

Aquí está con cinco:

SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson');

Resultado:

+---------------------------------------------+
| CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |
+---------------------------------------------+
| Homer Jay Simpson                           |
+---------------------------------------------+

Cadenas binarias

Si alguno de los argumentos es una cadena binaria, el resultado es una cadena binaria:

SELECT CONCAT(BINARY 'Homer', 'Jay');

Resultado:

+-------------------------------+
| CONCAT(BINARY 'Homer', 'Jay') |
+-------------------------------+
| HomerJay                      |
+-------------------------------+

Podemos usar COLLATION() función para verificar la intercalación del resultado:

SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay'));

Resultado:

+------------------------------------------+
| COLLATION(CONCAT(BINARY 'Homer', 'Jay')) |
+------------------------------------------+
| binary                                   |
+------------------------------------------+

Si eliminamos el BINARY operador, obtenemos un resultado diferente:

SELECT COLLATION(CONCAT('Homer', 'Jay'));

Resultado:

+-----------------------------------+
| COLLATION(CONCAT('Homer', 'Jay')) |
+-----------------------------------+
| utf8_general_ci                   |
+-----------------------------------+

Además, de acuerdo con la documentación de MariaDB, los argumentos numéricos se convierten a su forma de cadena binaria equivalente. Puede evitar esto haciendo una conversión de tipos explícita (usando CAST() o CONVERT() ).

Argumentos nulos

Si alguno de los argumentos es null , CONCAT() devuelve null .

Sin embargo, hay una excepción:cuando está en modo Oracle (es decir, sql_mode=ORACLE ), cualquier null simplemente se ignoran los argumentos.

Primero, veamos cómo CONCAT() se comporta en modo predeterminado.

Establecer nuestra sesión en modo predeterminado:

SET SESSION sql_mode=DEFAULT;

Ahora ejecuta CONCAT() con un null argumento:

SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');

Resultado:

+--------------------------------------------+
| CONCAT('Homer', ' ', null, ' ', 'Simpson') |
+--------------------------------------------+
| NULL                                       |
+--------------------------------------------+

Como era de esperar, el resultado es null .

Ahora cambiemos nuestra sesión al modo Oracle:

SET SESSION sql_mode=ORACLE;

Y ahora ejecutemos el anterior CONCAT() ejemplo de nuevo:

SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');

Resultado:

+--------------------------------------------+
| CONCAT('Homer', ' ', null, ' ', 'Simpson') |
+--------------------------------------------+
| Homer  Simpson                             |
+--------------------------------------------+

Esta vez ignoró el null argumento, y concatenó todos los restantes no null argumentos Si observa detenidamente, verá que concatenó ambos espacios, por lo que hay un espacio doble entre Homer y Simpson .

Para un null -alternativa segura, use CONCAT_WS() . Esa función ignora null valores, incluso cuando no está en modo Oracle.

Alternativamente, puede usar IFNULL() para proporcionar un valor alternativo (cadena) para null valores (como una cadena vacía).

Argumento único

Llamando a CONCAT() con un solo argumento simplemente devuelve ese argumento:

SELECT CONCAT('Homer');

Resultado:

+-----------------+
| CONCAT('Homer') |
+-----------------+
| Homer           |
+-----------------+

Argumento faltante

Llamando a CONCAT() sin pasar ningún argumento da como resultado un error:

SELECT CONCAT();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT'