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

Cómo funciona ELT() en MariaDB

En MariaDB, ELT() es una función de cadena integrada que acepta un argumento numérico, seguido de una serie de argumentos de cadena. Luego devuelve la cadena que corresponde a la posición numérica proporcionada por el primer argumento.

Sintaxis

La sintaxis es así:

ELT(N, str1[, str2, str3,...])

Donde N es el argumento numérico, y str1[, str2, str3,…] representa los argumentos de cadena.

Ejemplo

He aquí un ejemplo básico:

SELECT ELT(2, 'Red', 'Green', 'Blue');

Resultado:

+--------------------------------+
| ELT(2, 'Red', 'Green', 'Blue') |
+--------------------------------+
| Green                          |
+--------------------------------+

En este caso, usamos 2 para devolver el segundo argumento de cadena.

Flotadores

Si el primer argumento es un FLOAT , MariaDB lo redondea al entero más cercano:

SELECT 
    ELT(2.4, 'Red', 'Green', 'Blue') AS "2.4",
    ELT(2.5, 'Red', 'Green', 'Blue') AS "2.5";

Resultado:

+-------+------+
| 2.4   | 2.5  |
+-------+------+
| Green | Blue |
+-------+------+

Especificar una posición fuera de rango

Especificar una posición fuera de rango da como resultado null siendo devuelto. Ejemplos a continuación.

Posición de Cero

Proporcionar 0 como primer argumento devuelve null :

SELECT ELT(0, 'Red', 'Green', 'Blue');

Resultado:

+--------------------------------+
| ELT(0, 'Red', 'Green', 'Blue') |
+--------------------------------+
| NULL                           |
+--------------------------------+

Posición negativa

Proporcionar un valor negativo como primer argumento devuelve null :

SELECT ELT(-2, 'Red', 'Green', 'Blue');

Resultado:

+---------------------------------+
| ELT(-2, 'Red', 'Green', 'Blue') |
+---------------------------------+
| NULL                            |
+---------------------------------+

Cuando la posición es demasiado grande

Si el primer argumento es un número mayor que el número total de argumentos de cadena, ELT() devuelve nulo:

SELECT ELT(20, 'Red', 'Green', 'Blue');

Resultado:

+---------------------------------+
| ELT(20, 'Red', 'Green', 'Blue') |
+---------------------------------+
| NULL                            |
+---------------------------------+

Posiciones no numéricas

Si el primer argumento no es un número, ELT() devuelve null :

SELECT ELT('Two', 'Red', 'Green', 'Blue');

Resultado:

+------------------------------------+
| ELT('Two', 'Red', 'Green', 'Blue') |
+------------------------------------+
| NULL                               |
+------------------------------------+

Proporcionar solo un argumento de cadena

Proporcionar un único argumento de cadena es válido, aunque en este caso el primer argumento debería ser 1 para evitar obtener null :

SELECT ELT(1, 'Red');

Resultado:

+---------------+
| ELT(1, 'Red') |
+---------------+
| Red           |
+---------------+

Cadenas nulas

Los argumentos de cadena pueden ser null sin afectar el resultado de los demás:

SELECT ELT(3, 'Red', null, 'Blue');

Resultado:

+-----------------------------+
| ELT(3, 'Red', null, 'Blue') |
+-----------------------------+
| Blue                        |
+-----------------------------+

Aunque, especificando un número que coincida con el null argumento de cadena obviamente devolverá null :

SELECT ELT(2, 'Red', null, 'Blue');

Resultado:

+-----------------------------+
| ELT(2, 'Red', null, 'Blue') |
+-----------------------------+
| NULL                        |
+-----------------------------+

Especificar una posición nula

Proporcionar null ya que el primer argumento da como resultado null :

SELECT ELT(null, 'Red');

Resultado:

+------------------+
| ELT(null, 'Red') |
+------------------+
| NULL             |
+------------------+

Argumento único

Proporcionar solo un argumento devuelve un error:

SELECT ELT(2);

Resultado:

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

Argumento faltante

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

SELECT ELT();

Resultado:

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