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