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

MariaDB SUBSTR() explicado

En MariaDB, SUBSTR() es un sinónimo de SUBSTRING() .

Es una función de cadena integrada que devuelve una subcadena de una cadena dada.

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:

SUBSTR(str,pos), 
SUBSTR(str FROM pos), 
SUBSTR(str,pos,len),
SUBSTR(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 SUBSTR('Good doggy', 6);

Resultado:

+-------------------------+
| SUBSTR('Good doggy', 6) |
+-------------------------+
| doggy                   |
+-------------------------+

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

SELECT SUBSTR('Good doggy' FROM 6);

Resultado:

+-----------------------------+
| SUBSTR('Good doggy' FROM 6) |
+-----------------------------+
| doggy                       |
+-----------------------------+

Longitud de subcadena

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

SELECT SUBSTR('Good doggy', 6, 3);

Resultado:

+----------------------------+
| SUBSTR('Good doggy', 6, 3) |
+----------------------------+
| dog                        |
+----------------------------+

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

SELECT SUBSTR('Good doggy' FROM 6 FOR 3);

Resultado:

+-----------------------------------+
| SUBSTR('Good doggy' FROM 6 FOR 3) |
+-----------------------------------+
| dog                               |
+-----------------------------------+

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 SUBSTR('Good doggy', -5);

Resultado:

+--------------------------+
| SUBSTR('Good doggy', -5) |
+--------------------------+
| doggy                    |
+--------------------------+

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

SELECT SUBSTR('Good doggy' FROM -5 FOR 3);

Resultado:

+------------------------------------+
| SUBSTR('Good doggy' FROM -5 FOR 3) |
+------------------------------------+
| dog                                |
+------------------------------------+

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 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Resultado:

+------------+------------+
| 0          | 1          |
+------------+------------+
| Good doggy | Good doggy |
+------------+------------+

Aquí está en modo predeterminado:

SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Resultado:

+------+------------+
| 0    | 1          |
+------+------------+
|      | Good doggy |
+------+------------+

Argumentos nulos

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

SELECT 
    SUBSTR(null, 3, 3),
    SUBSTR('Doggy', null, 3),
    SUBSTR('Doggy', 3, null),
    SUBSTR(null, null, null);

Resultado:

+--------------------+--------------------------+--------------------------+--------------------------+
| SUBSTR(null, 3, 3) | SUBSTR('Doggy', null, 3) | SUBSTR('Doggy', 3, null) | SUBSTR(null, null, null) |
+--------------------+--------------------------+--------------------------+--------------------------+
| NULL               | NULL                     | NULL                     | NULL                     |
+--------------------+--------------------------+--------------------------+--------------------------+

Argumentos faltantes

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

SELECT SUBSTR();

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