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

MariaDB JSON_UNQUOTE() explicado


No MariaDB, JSON_UNQUOTE() é uma função interna que remove aspas de um valor JSON. Em outras palavras, ele “retira” um valor JSON.

Sintaxe


A sintaxe fica assim:
JSON_UNQUOTE(val)

Exemplo


Aqui está um exemplo para demonstrar.
SELECT JSON_UNQUOTE('"Eggs"');

Resultado:
+------------------------+
| JSON_UNQUOTE('"Eggs"') |
+------------------------+
| Eggs                   |
+------------------------+

Caracteres de escape


Se o valor contiver um caractere de barra invertida (\ ), geralmente é ignorado. No entanto, certas sequências que envolvem a barra invertida podem ter um significado especial e podem afetar o resultado de JSON_UNQUOTE() .

Isso dependerá se o modo SQL está ou não definido como NO_BACKSLASH_ESCAPES . Quando o modo SQL é definido como NO_BACKSLASH_ESCAPES , isso desativa o uso do caractere de barra invertida como caractere de escape em strings, tornando-o equivalente a um caractere comum.

Caso contrário, as seguintes sequências serão verdadeiras:
Sequência de escape Personagem
\" Aspas duplas (" )
\b Barra invertida
\f Formulário
\n Nova linha (alimentação de linha)
\r Devolução de carro
\t Guia
\\ Barra invertida (\ )
\uXXXX UTF-8 bytes para valor Unicode XXXX

Exemplo:
SELECT JSON_UNQUOTE('Feeling\tGood');

Resultado:
+-------------------------------+
| JSON_UNQUOTE('Feeling\tGood') |
+-------------------------------+
| Feeling	Good                  |
+-------------------------------+

Aqui, usei o \t seqüência para adicionar um caractere de tabulação dentro da string.

Se eu definir o modo SQL para NO_BACKSLASH_ESCAPES , a sequência não tem significado especial e a sequência literal é incluída na saída sem interpretação:
SET @@sql_mode = 'NO_BACKSLASH_ESCAPES';

SELECT JSON_UNQUOTE('Feeling\tGood');

Resultado:
+-------------------------------+
| JSON_UNQUOTE('Feeling\tGood') |
+-------------------------------+
| Feeling\tGood                 |
+-------------------------------+

Argumentos nulos


Se o argumento for NULL , o resultado é NULL :
SELECT JSON_UNQUOTE(null);

Resultado:
+--------------------+
| JSON_UNQUOTE(null) |
+--------------------+
| NULL               |
+--------------------+

Contagem de parâmetros incorreta


Chamando JSON_UNQUOTE() sem um argumento resulta em um erro:
SELECT JSON_UNQUOTE();

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'

É o mesmo quando você fornece muitos argumentos:
SELECT JSON_UNQUOTE('a', 'b');

Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'JSON_UNQUOTE'