Перейти к содержимому
Последнее обновление

JSON_UNQUOTE

Описание​

Эта функция удаляет кавычки из значений JSON и возвращает результат в виде строки. Если параметр равен NULL, возвращает NULL.

К специальным символам относятся:

  • Двойная кавычка (")
  • Обратная косая черта (\)
  • Возврат на шаг (\b)
  • Перевод строки (\n)
  • Возврат каретки (\r)
  • Горизонтальная табуляция (\t)

К управляющим символам относятся:

  • CHAR(0) экранируется как \u0000

Синтаксис​

JSON_UNQUOTE (<str>)

Параметры​

  • <str> Строка, из которой нужно удалить кавычки.

Возвращаемое значение​

Возвращает строку. Особые случаи:

  • Если входной параметр равен NULL, возвращает NULL.
  • Если входной параметр не является значением, заключённым в двойные кавычки, возвращает само значение.
  • Если входной параметр не является строкой, он автоматически преобразуется в строку, после чего возвращается само значение.

Примеры​

  1. Удаление символов экранирования из строк
    select json_unquote('"I am a \\"string\\" that contains double quotes."');
    +--------------------------------------------------------------------+
    | json_unquote('"I am a \\"string\\" that contains double quotes."') |
    +--------------------------------------------------------------------+
    | I am a "string" that contains double quotes. |
    +--------------------------------------------------------------------+
  2. Экранирование специальных символов
    select json_unquote('"\\\\ \\b \\n \\r \\t"');
    +----------------------------------------+
    | json_unquote('"\\\\ \\b \\n \\r \\t"') |
    +----------------------------------------+
    | \
    |
    +----------------------------------------+

    Поскольку символы экранирования удаляются, некоторые пробельные символы (перевод строки, возврат на шаг, табуляция и т. д.) будут выведены

  3. Экранирование управляющего символа
    select json_unquote('"\\u0000"');
    +---------------------------+
    | json_unquote('"\\u0000"') |
    +---------------------------+
    | |
    +---------------------------+
  4. Некорректная строка JSON
    select json_unquote('"I am a "string" that contains double quotes."');
    ERROR 1105 (HY000): errCode = 2, detailMessage = [RUNTIME_ERROR]Invalid JSON text in argument 1 to function json_unquote: "I am a "string" that contains double quotes."
  5. Строка начинается с кавычки, но не заканчивается кавычкой
    select json_unquote('"I am a "string" that contains double quotes.');
    +---------------------------------------------------------------+
    | json_unquote('"I am a "string" that contains double quotes.') |
    +---------------------------------------------------------------+
    | "I am a "string" that contains double quotes. |
    +---------------------------------------------------------------+
  6. Строка заканчивается кавычкой
    select json_unquote('I am a "string" that contains double quotes."');
    +---------------------------------------------------------------+
    | json_unquote('I am a "string" that contains double quotes."') |
    +---------------------------------------------------------------+
    | I am a "string" that contains double quotes." |
    +---------------------------------------------------------------+