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

Cómo funciona SUBSTRING() en MariaDB

En MariaDB, SUBSTRING() es una función de cadena integrada que devuelve una subcadena de una cadena dada.

SUBSTRING() requiere al menos dos argumentos; la cadena y la posición desde la que extraer la subcadena. También acepta un tercer argumento opcional que le permite especificar la longitud que debe tener la subcadena.

Sintaxis

La sintaxis toma las siguientes formas:

SUBSTRING(str,pos), 
SUBSTRING(str FROM pos), 
SUBSTRING(str,pos,len),
SUBSTRING(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.

Las dos formas que usan FROM palabra clave son sintaxis SQL estándar.

Ejemplo

He aquí un ejemplo básico:

SELECT SUBSTRING('Big fat cat', 5);

Resultado:

+-----------------------------+
| SUBSTRING('Big fat cat', 5) |
+-----------------------------+
| fat cat                     |
+-----------------------------+

Este es el mismo ejemplo, pero usando la sintaxis SQL estándar:

SELECT SUBSTRING('Big fat cat' FROM 5);

Resultado:

+---------------------------------+
| SUBSTRING('Big fat cat' FROM 5) |
+---------------------------------+
| fat cat                         |
+---------------------------------+

Longitud de subcadena

Aquí hay un ejemplo que especifica la longitud de la subcadena a extraer:

SELECT SUBSTRING('Big fat cat', 5, 3);

Resultado:

+--------------------------------+
| SUBSTRING('Big fat cat', 5, 3) |
+--------------------------------+
| fat                            |
+--------------------------------+

Y aquí está usando la sintaxis SQL estándar:

SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);

Resultado:

+---------------------------------------+
| SUBSTRING('Big fat cat' FROM 5 FOR 3) |
+---------------------------------------+
| fat                                   |
+---------------------------------------+

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 SUBSTRING('Big fat cat', -3);

Resultado:

+------------------------------+
| SUBSTRING('Big fat cat', -3) |
+------------------------------+
| cat                          |
+------------------------------+

También se puede usar una posición negativa cuando se usa la sintaxis SQL estándar:

SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);

Resultado:

+----------------------------------------+
| SUBSTRING('Big fat cat' FROM -7 FOR 3) |
+----------------------------------------+
| fat                                    |
+----------------------------------------+

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 
    SUBSTRING('Big fat cat', 0) AS "0",
    SUBSTRING('Big fat cat', 1) AS "1";

Resultado:

+-------------+-------------+
| 0           | 1           |
+-------------+-------------+
| Big fat cat | Big fat cat |
+-------------+-------------+

Aquí está en modo predeterminado:

SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTRING('Big fat cat', 0) AS "0",
    SUBSTRING('Big fat cat', 1) AS "1";

Resultado:

+------+-------------+
| 0    | 1           |
+------+-------------+
|      | Big fat cat |
+------+-------------+

Argumentos nulos

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

SELECT 
    SUBSTRING(null, 3, 3),
    SUBSTRING('Coffee', null, 3),
    SUBSTRING('Coffee', 3, null),
    SUBSTRING(null, null, null);

Resultado:

+-----------------------+------------------------------+------------------------------+-----------------------------+
| SUBSTRING(null, 3, 3) | SUBSTRING('Coffee', null, 3) | SUBSTRING('Coffee', 3, null) | SUBSTRING(null, null, null) |
+-----------------------+------------------------------+------------------------------+-----------------------------+
| NULL                  | NULL                         | NULL                         | NULL                        |
+-----------------------+------------------------------+------------------------------+-----------------------------+

Argumentos faltantes

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

SELECT SUBSTRING();

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