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

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 |
+--------------------+