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