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

MariaDB SUBSTR() Explicado


No MariaDB, SUBSTR() é um sinônimo para SUBSTRING() .

É uma função de string integrada que retorna uma substring de uma determinada string.

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

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

Aqui está o mesmo exemplo, mas usando a sintaxe SQL padrão:
SELECT SUBSTR('Good doggy' FROM 6);

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

Comprimento da Substring


Aqui está um exemplo que especifica o comprimento da substring a ser extraída:
SELECT SUBSTR('Good doggy', 6, 3);

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

E aqui está usando a sintaxe SQL padrão:
SELECT SUBSTR('Good doggy' FROM 6 FOR 3);

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

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

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

Uma posição negativa também pode ser usada ao usar a sintaxe SQL padrão:
SELECT SUBSTR('Good doggy' FROM -5 FOR 3);

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

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

Resultado:
+------------+------------+
| 0          | 1          |
+------------+------------+
| Good doggy | Good doggy |
+------------+------------+

Aqui está no modo padrão:
SET SQL_MODE=DEFAULT;
SELECT 
    SUBSTR('Good doggy', 0) AS "0",
    SUBSTR('Good doggy', 1) AS "1";

Resultado:
+------+------------+
| 0    | 1          |
+------+------------+
|      | Good doggy |
+------+------------+

Argumentos nulos


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


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