Перейти к основному содержимому
Версия: 2.0.x

cast

Преобразует значение между типом JSON и типом SQL.

подсказка

Все JSON-функции и операторы перечислены в навигации и на обзорной странице

Ускорьте ваши запросы с помощью генерируемых столбцов

Синтаксис

  • Преобразование из JSON в SQL
cast(json_expr AS sql_data_type)
  • Преобразование из SQL в JSON
cast(sql_expr AS JSON)

Параметры

  • json_expr: выражение, представляющее JSON-значение, которое вы хотите преобразовать в SQL-значение.

  • sql_data_type: тип данных SQL, в который вы хотите преобразовать JSON-значение. Поддерживаются только типы данных STRING, VARCHAR, CHAR, BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, DOUBLE и FLOAT.

  • sql_expr: выражение, представляющее SQL-значение, которое вы хотите преобразовать в JSON-значение. Этот параметр поддерживает все типы данных SQL, поддерживаемые параметром sql_data_type.

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

  • Если вы используете синтаксис cast(json_expr AS sql_data_type), функция cast возвращает значение типа данных SQL, указанного параметром sql_data_type.

  • Если вы используете синтаксис cast(sql_expr AS JSON), функция cast возвращает JSON-значение.

Примечания по использованию

  • Преобразование из SQL в JSON

    • Если SQL-значение превышает точность, поддерживаемую JSON, функция cast возвращает NULL для предотвращения арифметического переполнения.

    • Если SQL-значение равно NULL, функция cast не преобразует SQL-значение NULL в JSON-значение NULL. Возвращаемое значение по-прежнему является SQL-значением NULL.

  • Преобразование из JSON в SQL

    • Функция cast поддерживает только преобразования между совместимыми типами данных JSON и SQL. Например, вы можете преобразовать JSON-строку в SQL-строку.

    • Функция cast не поддерживает преобразования между несовместимыми типами данных JSON и SQL. Например, если вы преобразуете JSON-число в SQL-строку, функция возвращает NULL.

    • Если происходит арифметическое переполнение, функция cast возвращает SQL-значение NULL.

    • Если вы преобразуете JSON-значение NULL в SQL-значение, функция возвращает SQL-значение NULL.

    • Если вы преобразуете JSON-строку в значение VARCHAR, функция возвращает значение VARCHAR, не заключённое в двойные кавычки (").

Примеры

Пример 1: Преобразование JSON-значения в SQL-значение.

-- Преобразование JSON-значения в значение INT.
mysql> select cast(parse_json('{"a": 1}') -> 'a' as int);
+--------------------------------------------+
| CAST((parse_json('{"a": 1}')->'a') AS INT) |
+--------------------------------------------+
| 1 |
+--------------------------------------------+

-- Преобразование JSON-строки в значение VARCHAR.
mysql> select cast(parse_json('"star"') as varchar);
+---------------------------------------+
| cast(parse_json('"star"') AS VARCHAR) |
+---------------------------------------+
| star |
+---------------------------------------+

-- Преобразование JSON-объекта в значение VARCHAR.
mysql> select cast(parse_json('{"star": 1}') as varchar);
+--------------------------------------------+
| cast(parse_json('{"star": 1}') AS VARCHAR) |
+--------------------------------------------+
| {"star": 1} |
+--------------------------------------------+

-- Преобразование JSON-массива в значение VARCHAR.

mysql> select cast(parse_json('[1,2,3]') as varchar);
+----------------------------------------+
| cast(parse_json('[1,2,3]') AS VARCHAR) |
+----------------------------------------+
| [1, 2, 3] |
+----------------------------------------+

Пример 2: Преобразование SQL-значения в JSON-значение.

-- Преобразование значения INT в JSON-значение.
mysql> select cast(1 as json);
+-----------------+
| cast(1 AS JSON) |
+-----------------+
| 1 |
+-----------------+

-- Преобразование значения VARCHAR в JSON-значение.
mysql> select cast("star" as json);
+----------------------+
| cast('star' AS JSON) |
+----------------------+
| "star" |
+----------------------+

-- Преобразование значения BOOLEAN в JSON-значение.
mysql> select cast(true as json);
+--------------------+
| cast(TRUE AS JSON) |
+--------------------+
| true |
+--------------------+