No MariaDB,
MID()
é um sinônimo para SUBSTRING()
. Ele retorna uma substring de uma determinada string. De acordo com a documentação do MariaDB é sinônimo de
SUBSTRING(str,pos,len)
sintaxe de SUBSTRING()
, no entanto, meus testes mostram que funciona com todas as várias formas. Sintaxe
De acordo com a documentação do MariaDB, a sintaxe é assim:
MID(str,pos,len)
No entanto, descobri que funciona com os seguintes formulários (que são os mesmos formulários que
SUBSTRING()
apoia):MID(str,pos),
MID(str FROM pos),
MID(str,pos,len),
MID(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. Exemplo
Segue um exemplo básico:
SELECT MID('Drink your beer', 7);
Resultado:
+---------------------------+ | MID('Drink your beer', 7) | +---------------------------+ | your beer | +---------------------------+
Aqui está o mesmo exemplo, mas usando o
FROM
sintaxe:SELECT MID('Drink your beer' FROM 7);
Resultado:
+-------------------------------+ | MID('Drink your beer' FROM 7) | +-------------------------------+ | your beer | +-------------------------------+
Comprimento da Substring
Aqui está um exemplo que especifica o comprimento da substring a ser extraída. Esta é a única sintaxe que a documentação do MariaDB cita para o
MID()
função. SELECT MID('Drink your beer', 7, 4);
Resultado:
+------------------------------+ | MID('Drink your beer', 7, 4) | +------------------------------+ | your | +------------------------------+
E aqui está usando
FROM...FOR
sintaxe:SELECT MID('Drink your beer' FROM 7 FOR 4);
Resultado:
+-------------------------------------+ | MID('Drink your beer' FROM 7 FOR 4) | +-------------------------------------+ | your | +-------------------------------------+
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 MID('Drink your beer', -9);
Resultado:
+----------------------------+ | MID('Drink your beer', -9) | +----------------------------+ | your beer | +----------------------------+
Uma posição negativa também pode ser usada ao usar o
FROM
sintaxe:SELECT MID('Drink your beer' FROM -9 FOR 4);
Resultado:
+--------------------------------------+ | MID('Drink your beer' FROM -9 FOR 4) | +--------------------------------------+ | your | +--------------------------------------+
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
MID('Drink your beer', 0) AS "0",
MID('Drink your beer', 1) AS "1";
Resultado:
+-----------------+-----------------+ | 0 | 1 | +-----------------+-----------------+ | Drink your beer | Drink your beer | +-----------------+-----------------+
Aqui está no modo padrão:
SET SQL_MODE=DEFAULT;
SELECT
MID('Drink your beer', 0) AS "0",
MID('Drink your beer', 1) AS "1";
Resultado:
+------+-----------------+ | 0 | 1 | +------+-----------------+ | | Drink your beer | +------+-----------------+
Argumentos nulos
Se algum (ou todos) dos argumentos for
null
, o MID()
função retorna null
:SELECT
MID(null, 3, 3),
MID('Beer', null, 3),
MID('Beer', 3, null),
MID(null, null, null);
Resultado:
+-----------------+----------------------+----------------------+-----------------------+ | MID(null, 3, 3) | MID('Beer', null, 3) | MID('Beer', 3, null) | MID(null, null, null) | +-----------------+----------------------+----------------------+-----------------------+ | NULL | NULL | NULL | NULL | +-----------------+----------------------+----------------------+-----------------------+
Argumentos ausentes
Chamando
MID()
sem passar nenhum argumento resulta em um erro:SELECT MID();
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