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'