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

Como MID() funciona no MariaDB


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