MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como SUBSTRING() funciona no MariaDB


No MariaDB, SUBSTRING() é uma função de string interna que retorna uma substring de uma determinada string.

SUBSTRING() requer pelo menos dois argumentos; a string e a posição da qual extrair a substring. Ele também aceita um terceiro argumento opcional que permite especificar quanto tempo a substring deve ter.

Sintaxe


A sintaxe assume as seguintes formas:
SUBSTRING(str,pos), 
SUBSTRING(str FROM pos), 
SUBSTRING(str,pos,len),
SUBSTRING(str FROM pos FOR len)

Onde str é a string, pos é a posição inicial da substring e len é o número de caracteres a serem extraídos.

Os dois formulários que usam o FROM palavra-chave são sintaxe SQL padrão.

Exemplo


Segue um exemplo básico:
SELECT SUBSTRING('Big fat cat', 5);

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

Aqui está o mesmo exemplo, mas usando a sintaxe SQL padrão:
SELECT SUBSTRING('Big fat cat' FROM 5);

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

Comprimento da Substring


Aqui está um exemplo que especifica o comprimento da substring a ser extraída:
SELECT SUBSTRING('Big fat cat', 5, 3);

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

E aqui está usando a sintaxe SQL padrão:
SELECT SUBSTRING('Big fat cat' FROM 5 FOR 3);

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

Posição negativa


Especificar um valor negativo para a posição faz com que a posição inicial seja contada para trás a partir do final da string:
SELECT SUBSTRING('Big fat cat', -3);

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

Uma posição negativa também pode ser usada ao usar a sintaxe SQL padrão:
SELECT SUBSTRING('Big fat cat' FROM -7 FOR 3);

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

Nesse caso, também defino um comprimento para a substring.

Modo Oráculo


Quando no modo Oracle, uma posição inicial de 0 (zero) é tratado como 1 . No entanto, uma posição inicial de 1 também é tratado como 1 .

Isso contrasta com outros modos, onde 0 retornará uma string vazia.

Exemplo:
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 |
+-------------+-------------+

Aqui está no modo padrão:
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


Se algum (ou todos) dos argumentos for null , o SUBSTRING() função retorna 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 ausentes


Chamando SUBSTRING() sem passar nenhum argumento resulta em um erro:
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