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