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

Cómo funciona MID() en MariaDB

En MariaDB, MID() es un sinónimo de SUBSTRING() . Devuelve una subcadena de una cadena dada.

Según la documentación de MariaDB, es un sinónimo de SUBSTRING(str,pos,len) sintaxis de SUBSTRING() , sin embargo, mis pruebas muestran que funciona con todas las diversas formas.

Sintaxis

Según la documentación de MariaDB, la sintaxis es la siguiente:

MID(str,pos,len)

Sin embargo, descubrí que funciona con los siguientes formularios (que son los mismos formularios que SUBSTRING() admite):

MID(str,pos), 
MID(str FROM pos), 
MID(str,pos,len),
MID(str FROM pos FOR len)

Donde str es la cadena, pos es la posición inicial de la subcadena y len es el número de caracteres a extraer.

Ejemplo

He aquí un ejemplo básico:

SELECT MID('Drink your beer', 7);

Resultado:

+---------------------------+
| MID('Drink your beer', 7) |
+---------------------------+
| your beer                 |
+---------------------------+

Aquí está el mismo ejemplo, pero usando el FROM sintaxis:

SELECT MID('Drink your beer' FROM 7);

Resultado:

+-------------------------------+
| MID('Drink your beer' FROM 7) |
+-------------------------------+
| your beer                     |
+-------------------------------+

Longitud de subcadena

Aquí hay un ejemplo que especifica la longitud de la subcadena a extraer. Esta es la única sintaxis que cita la documentación de MariaDB para MID() función.

SELECT MID('Drink your beer', 7, 4);

Resultado:

+------------------------------+
| MID('Drink your beer', 7, 4) |
+------------------------------+
| your                         |
+------------------------------+

Y aquí está usando FROM...FOR sintaxis:

SELECT MID('Drink your beer' FROM 7 FOR 4);

Resultado:

+-------------------------------------+
| MID('Drink your beer' FROM 7 FOR 4) |
+-------------------------------------+
| your                                |
+-------------------------------------+

Posición negativa

Especificar un valor negativo para la posición hace que la posición inicial se cuente hacia atrás desde el final de la cadena:

SELECT MID('Drink your beer', -9);

Resultado:

+----------------------------+
| MID('Drink your beer', -9) |
+----------------------------+
| your beer                  |
+----------------------------+

También se puede usar una posición negativa cuando se usa FROM sintaxis:

SELECT MID('Drink your beer' FROM -9 FOR 4);

Resultado:

+--------------------------------------+
| MID('Drink your beer' FROM -9 FOR 4) |
+--------------------------------------+
| your                                 |
+--------------------------------------+

En este caso, también establecí una longitud para la subcadena.

Modo oráculo

Cuando está en modo Oracle, una posición de inicio de 0 (cero) se trata como 1 . Sin embargo, una posición inicial de 1 también se trata como 1 .

Esto contrasta con otros modos, donde 0 devolverá una cadena vacía.

Ejemplo:

SET SQL_MODE=ORACLE;
SELECT 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Resultado:

+-----------------+-----------------+
| 0               | 1               |
+-----------------+-----------------+
| Drink your beer | Drink your beer |
+-----------------+-----------------+

Aquí está en modo predeterminado:

SET SQL_MODE=DEFAULT;
SELECT 
    MID('Drink your beer', 0) AS "0",
    MID('Drink your beer', 1) AS "1";

Resultado:

+------+-----------------+
| 0    | 1               |
+------+-----------------+
|      | Drink your beer |
+------+-----------------+

Argumentos nulos

Si alguno (o todos) de los argumentos son null , el MID() la función devuelve null :

SELECT 
    MID(null, 3, 3),
    MID('Beer', null, 3),
    MID('Beer', 3, null),
    MID(null, null, null);

Resultado:

+-----------------+----------------------+----------------------+-----------------------+
| MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) |
+-----------------+----------------------+----------------------+-----------------------+
| NULL            | NULL                 | NULL                 | NULL                  |
+-----------------+----------------------+----------------------+-----------------------+

Argumentos faltantes

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

SELECT MID();

Resultado:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1