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

Типы JSON-функций

Существует два набора функций для разбора JSON:
  • simpleJSON* (visitParam*) — для чрезвычайно быстрого разбора ограниченного подмножества JSON.
  • JSONExtract* — для разбора обычного JSON.

Функции simpleJSON (visitParam)

В ClickHouse есть специальные функции для работы с упрощённым JSON. Все эти JSON-функции основаны на строгих допущениях относительно того, каким может быть JSON. Они стараются делать как можно меньше, чтобы выполнить задачу как можно быстрее. Предполагается следующее:
  1. Имя поля (аргумент функции) должно быть константой.
  2. Имя поля в JSON должно быть закодировано в канонической форме. Например: simpleJSONHas('{"abc":"def"}', 'abc') = 1, но simpleJSONHas('{"\\u0061\\u0062\\u0063":"def"}', 'abc') = 0
  3. Поля ищутся на любом уровне вложенности без учёта контекста. Если есть несколько совпадающих полей, используется первое вхождение.
  4. В JSON не должно быть пробельных символов вне строковых литералов.

Функции JSONExtract

Эти функции основаны на simdjson и предназначены для более сложных сценариев парсинга JSON.

Регистронезависимые функции JSONExtract

Эти функции выполняют регистронезависимое сопоставление ASCII-ключей при извлечении значений из объектов JSON. Они работают так же, как и их регистрозависимые аналоги, за исключением того, что ключи объектов сопоставляются без учета регистра. Если нескольким ключам с разным регистром соответствует совпадение, возвращается первое из них.
Эти функции могут работать медленнее, чем их регистрозависимые аналоги, поэтому по возможности используйте обычные функции JSONExtract.

JSONAllPaths

Добавленный в: v24.8.0 Возвращает список всех путей, хранящихся в каждой строке JSON-столбца. Синтаксис
JSONAllPaths(json)
Аргументы
  • json — JSON-столбец. JSON
Возвращаемое значение Возвращает массив всех путей в JSON-столбце. Array(String) Примеры Пример использования
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONAllPaths(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONAllPaths(json)─┐
│ {"a":"42"}                           │ ['a']              │
│ {"b":"Hello"}                        │ ['b']              │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ ['a','c']          │
└──────────────────────────────────────┴────────────────────┘

JSONAllPathsWithTypes

Добавленный в: v24.8.0 Возвращает список всех путей и соответствующих им типов данных, хранящихся в каждой строке JSON-столбца. Синтаксис
JSONAllPathsWithTypes(json)
Аргументы
  • json — JSON-столбец. JSON
Возвращаемое значение Возвращает карту всех путей и их типов данных в JSON-столбце. Map(String, String) Примеры Пример использования
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONAllPathsWithTypes(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONAllPathsWithTypes(json)───────────────┐
│ {"a":"42"}                           │ {'a':'Int64'}                             │
│ {"b":"Hello"}                        │ {'b':'String'}                            │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ {'a':'Array(Nullable(Int64))','c':'Date'} │
└──────────────────────────────────────┴───────────────────────────────────────────┘

JSONAllValues

Добавленный в: v26.4.0 Возвращает все значения из каждой строки JSON-столбца в виде массива строк. Значения сериализуются в текстовом представлении и упорядочиваются по именам путей. Синтаксис
JSONAllValues(json)
Аргументы
  • json — JSON-столбец. JSON
Возвращаемое значение Возвращает массив всех значений JSON-столбца в виде строк. Array(String) Примеры Пример использования
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json": {"a": 42}}, {"json": {"b": "Hello"}}, {"json": {"a": [1, 2, 3], "c": "2020-01-01"}}
SELECT json, JSONAllValues(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONAllValues(json)──────┐
│ {"a":42}                             │ ['42']                   │
│ {"b":"Hello"}                        │ ['Hello']                │
│ {"a":[1,2,3],"c":"2020-01-01"}       │ ['[1,2,3]','2020-01-01'] │
└──────────────────────────────────────┴──────────────────────────┘

JSONArrayLength

Добавленный в: v23.2.0 Возвращает количество элементов в JSON-массиве верхнего уровня. Функция возвращает NULL, если входная JSON-строка недействительна. Синтаксис
JSONArrayLength(json)
Псевдонимы: JSON_ARRAY_LENGTH Аргументы
  • json — строка String с корректным JSON. String
Возвращаемое значение Возвращает количество элементов массива, если json является строкой с корректным JSON-массивом; в противном случае возвращает NULL. Nullable(UInt64) Примеры Пример использования
Query
SELECT
    JSONArrayLength(''),
    JSONArrayLength('[1,2,3]');
Response
┌─JSONArrayLength('')─┬─JSONArrayLength('[1,2,3]')─┐
│                ᴺᵁᴸᴸ │                          3 │
└─────────────────────┴────────────────────────────┘

JSONDynamicPaths

Добавленный в: v24.8.0 Возвращает список динамических путей, хранящихся в JSON-столбце как отдельные подстолбцы. Синтаксис
JSONDynamicPaths(json)
Аргументы
  • json — JSON-столбец. JSON
Возвращаемое значение Возвращает массив динамических путей из JSON-столбца. Array(String) Примеры Пример использования
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONDynamicPaths(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONDynamicPaths(json)─┐
│ {"a":"42"}                           │ ['a']                  │
│ {"b":"Hello"}                        │ []                     │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ ['a']                  │
└──────────────────────────────────────┴────────────────────────┘

JSONDynamicPathsWithTypes

Добавленный в: v24.8.0 Возвращает список динамических путей, которые хранятся как отдельные подстолбцы, и их типы для каждой строки в JSON-столбце. Синтаксис
JSONDynamicPathsWithTypes(json)
Аргументы
  • json — JSON-столбец. JSON
Возвращаемое значение Возвращает Map динамических путей и их типов данных в JSON-столбце. Map(String, String) Примеры Пример использования
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONDynamicPathsWithTypes(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONDynamicPathsWithTypes(json)─┐
│ {"a":"42"}                           │ {'a':'Int64'}                   │
│ {"b":"Hello"}                        │ {}                              │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ {'a':'Array(Nullable(Int64))'}  │
└──────────────────────────────────────┴─────────────────────────────────┘

JSONExtract

Добавленный в: v19.14.0 Разбирает JSON и извлекает значение указанного типа данных ClickHouse. Синтаксис
JSONExtract(json[, indices_or_keys, ...], return_type)
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть либо строкой, либо целым числом. String или (U)Int*
  • return_type — Тип данных ClickHouse, который нужно вернуть. String
Возвращаемое значение Возвращает значение указанного типа данных ClickHouse, если это возможно, в противном случае — значение по умолчанию для этого типа. Примеры Пример использования
Query
SELECT JSONExtract('{"a": "hello", "b": [-100, 200.0, 300]}', 'Tuple(String, Array(Float64))') AS res;
Response
┌─res──────────────────────────────┐
│ ('hello',[-100,200,300])         │
└──────────────────────────────────┘

JSONExtractArrayRaw

Добавленный в: v20.1.0 Возвращает массив, содержащий элементы JSON-массива, каждый из которых представлен в виде неразобранной строки. Синтаксис
JSONExtractArrayRaw(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть строкой или целым числом. String или (U)Int*
Возвращаемое значение Возвращает массив строк, содержащий элементы JSON-массива. Если соответствующая часть не является массивом или не существует, возвращается пустой массив. Array(String) Примеры Пример использования
Query
SELECT JSONExtractArrayRaw('{"a": "hello", "b": [-100, 200.0, "hello"]}', 'b') AS res;
Response
┌─res──────────────────────────┐
│ ['-100','200.0','"hello"']   │
└──────────────────────────────┘

JSONExtractArrayRawCaseInsensitive

Добавленный в: v25.8.0 Возвращает массив из элементов JSON-массива, каждый из которых представлен как неразобранная строка, с использованием регистронезависимого сопоставления ключей. Эта функция аналогична JSONExtractArrayRaw. Синтаксис
JSONExtractArrayRawCaseInsensitive(json [, indices_or_keys]...)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к массиву. Для ключей используется регистронезависимое сравнение String или (U)Int*
Возвращаемое значение Возвращает массив необработанных JSON-строк. Array(String) Примеры базовый
Query
SELECT JSONExtractArrayRawCaseInsensitive('{"Items": [1, 2, 3]}', 'ITEMS')
Response
['1','2','3']

JSONExtractBool

Добавленный в: v20.1.0 Разбирает JSON и извлекает значение типа Bool. Синтаксис
JSONExtractBool(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть либо строкой, либо целым числом. String или (U)Int*
Возвращаемое значение Возвращает значение типа Bool, если оно существует; в противном случае возвращает 0. Bool Примеры Пример использования
Query
SELECT JSONExtractBool('{"passed": true}', 'passed') AS res;
Response
┌─res─┐
│   1 │
└─────┘

JSONExtractBoolCaseInsensitive

Добавленный в: v25.8.0 Разбирает JSON и извлекает булево значение, используя регистронезависимое сопоставление ключей. Эта функция похожа на JSONExtractBool. Синтаксис
JSONExtractBoolCaseInsensitive(json [, indices_or_keys]...)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к полю. Для ключей используется регистронезависимое сопоставление String или (U)Int*
Возвращаемое значение Возвращает извлечённое логическое значение (1 для true, 0 для false), либо 0, если значение не найдено. UInt8 Примеры базовый
Query
SELECT JSONExtractBoolCaseInsensitive('{"IsActive": true}', 'isactive')
Response
1

JSONExtractCaseInsensitive

Добавленный в: v25.8.0 Разбирает JSON и извлекает значение указанного типа данных ClickHouse с помощью регистронезависимого сопоставления ключей. Эта функция похожа на JSONExtract. Синтаксис
JSONExtractCaseInsensitive(json [, indices_or_keys...], return_type)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к полю. Для ключей используется регистронезависимое сопоставление String или (U)Int*
  • return_type — Тип данных ClickHouse, который нужно извлечь String
Возвращаемое значение Возвращает извлечённое значение в указанном типе данных. Any Примеры int_type
Query
SELECT JSONExtractCaseInsensitive('{"Number": 123}', 'number', 'Int32')
Response
123
array_type
Query
SELECT JSONExtractCaseInsensitive('{"List": [1, 2, 3]}', 'list', 'Array(Int32)')
Response
[1,2,3]

JSONExtractFloat

Добавленный в: v20.1.0 Разбирает JSON и извлекает значение типа Float. Синтаксис
JSONExtractFloat(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть либо строкой, либо целым числом. String или (U)Int*
Возвращаемое значение Возвращает значение типа Float, если оно существует; в противном случае — 0. Float64 Примеры Пример использования
Query
SELECT JSONExtractFloat('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 2) AS res;
Response
┌─res─┐
│ 200 │
└─────┘

JSONExtractFloatCaseInsensitive

Добавленный в: v25.8.0 Разбирает JSON и извлекает значение типа Float, используя регистронезависимое сопоставление ключей. Эта функция аналогична JSONExtractFloat. Синтаксис
JSONExtractFloatCaseInsensitive(json [, indices_or_keys]...)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к полю. Для ключей используется регистронезависимое сопоставление String или (U)Int*
Возвращаемое значение Возвращает извлечённое значение типа Float; 0, если оно не найдено или не может быть преобразовано. Float64 Примеры базовый
Query
SELECT JSONExtractFloatCaseInsensitive('{"Price": 12.34}', 'PRICE')
Response
12.34

JSONExtractInt

Добавленный в: v20.1.0 Разбирает JSON и извлекает значение типа Int. Синтаксис
JSONExtractInt(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть либо строкой, либо целым числом. String или (U)Int*
Возвращаемое значение Возвращает значение типа Int, если оно существует; в противном случае возвращает 0. Int64 Примеры Пример использования
Query
SELECT JSONExtractInt('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 1) AS res;
Response
┌──res─┐
│ -100 │
└──────┘

JSONExtractIntCaseInsensitive

Добавленный в: v25.8.0 Разбирает JSON и извлекает значение типа Int с регистронезависимым сопоставлением ключей. Эта функция аналогична JSONExtractInt. Синтаксис
JSONExtractIntCaseInsensitive(json [, indices_or_keys]...)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к полю. Для ключей используется регистронезависимое сравнение String или (U)Int*
Возвращаемое значение Возвращает извлечённое значение типа Int; 0, если значение не найдено или его нельзя преобразовать. Int64 Примеры базовый пример
Query
SELECT JSONExtractIntCaseInsensitive('{"Value": 123}', 'value')
Response
123
вложенный
Query
SELECT JSONExtractIntCaseInsensitive('{"DATA": {"COUNT": 42}}', 'data', 'Count')
Response
42

JSONExtractKeys

Добавленный в: v21.11.0 Разбирает строку JSON и извлекает из неё ключи. Синтаксис
JSONExtractKeys(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть строкой или целым числом. String или (U)Int*
Возвращаемое значение Возвращает массив ключей объекта JSON. Array(String) Примеры Пример использования
Query
SELECT JSONExtractKeys('{"a": "hello", "b": [-100, 200.0, 300]}') AS res;
Response
┌─res─────────┐
│ ['a','b']   │
└─────────────┘

JSONExtractKeysAndValues

Добавленный в: v20.1.0 Разбирает пары ключ-значение из JSON, где значения имеют указанный тип данных ClickHouse. Синтаксис
JSONExtractKeysAndValues(json[, indices_or_keys, ...], value_type)
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть строкой или целым числом. String или (U)Int*
  • value_type — Тип данных ClickHouse для значений. String
Возвращаемое значение Возвращает массив Tuple с разобранными парами ключ-значение. Array(Tuple(String, value_type)) Примеры Пример использования
Query
SELECT JSONExtractKeysAndValues('{"x": {"a": 5, "b": 7, "c": 11}}', 'Int8', 'x') AS res;
Response
┌─res────────────────────┐
│ [('a',5),('b',7),('c',11)] │
└────────────────────────┘

JSONExtractKeysAndValuesCaseInsensitive

Добавленный в: v25.8.0 Разбирает пары «ключ-значение» из JSON, используя регистронезависимое сопоставление ключей. Эта функция похожа на JSONExtractKeysAndValues. Синтаксис
JSONExtractKeysAndValuesCaseInsensitive(json [, indices_or_keys...], value_type)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к объекту. Ключи сопоставляются без учета регистра String или (U)Int*
  • value_type — Тип данных ClickHouse для значений String
Возвращаемое значение Возвращает массив кортежей, содержащих пары ключ-значение. Array(Tuple(String, T)) Примеры базовый
Query
SELECT JSONExtractKeysAndValuesCaseInsensitive('{"Name": "Alice", "AGE": 30}', 'String')
Response
[('Name','Alice'),('AGE','30')]

JSONExtractKeysAndValuesRaw

Добавленный в: v20.4.0 Возвращает массив Tuple с ключами и значениями из объекта JSON. Все значения представлены в виде необработанных строк. Синтаксис
JSONExtractKeysAndValuesRaw(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть строкой или целым числом. String или (U)Int*
Возвращаемое значение Возвращает массив кортежей с разобранными парами ключ-значение, где значения представлены неразобранными строками. Array(Tuple(String, String)) Примеры Пример использования
Query
SELECT JSONExtractKeysAndValuesRaw('{"a": [-100, 200.0], "b": "hello"}') AS res;
Response
┌─res──────────────────────────────────┐
│ [('a','[-100,200.0]'),('b','"hello"')] │
└──────────────────────────────────────┘

JSONExtractKeysAndValuesRawCaseInsensitive

Добавленный в: v25.8.0 Извлекает из JSON необработанные пары ключ-значение с регистронезависимым сопоставлением ключей. Эта функция похожа на JSONExtractKeysAndValuesRaw. Синтаксис
JSONExtractKeysAndValuesRawCaseInsensitive(json [, indices_or_keys]...)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к объекту. Для ключей используется регистронезависимое сравнение String или (U)Int*
Возвращаемое значение Возвращает массив Tuple, содержащих пары ключ-значение в виде строк в исходном виде. Array(Tuple(String, String)) Примеры простой
Query
SELECT JSONExtractKeysAndValuesRawCaseInsensitive('{"Name": "Alice", "AGE": 30}')
Response
[('Name','"Alice"'),('AGE','30')]

JSONExtractKeysCaseInsensitive

Добавленный в: v25.8.0 Разбирает строку JSON и извлекает ключи, используя регистронезависимое сопоставление ключей для перехода к вложенным объектам. Эта функция похожа на JSONExtractKeys. Синтаксис
JSONExtractKeysCaseInsensitive(json [, indices_or_keys]...)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к объекту. Ключи используют регистронезависимое сопоставление ключей String или (U)Int*
Возвращаемое значение Возвращает массив ключей из объекта JSON. Array(String) Примеры базовый
Query
SELECT JSONExtractKeysCaseInsensitive('{"Name": "Alice", "AGE": 30}')
Response
['Name','AGE']
вложенный
Query
SELECT JSONExtractKeysCaseInsensitive('{"User": {"name": "John", "AGE": 25}}', 'user')
Response
['name','AGE']

JSONExtractRaw

Добавленный в: v20.1.0 Возвращает часть JSON как неразобранную строку. Синтаксис
JSONExtractRaw(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть либо строкой, либо целым числом. String или (U)Int*
Возвращаемое значение Возвращает часть JSON в виде неразобранной строки. Если эта часть не существует или имеет неверный тип, возвращается пустая строка. String Примеры Пример использования
Query
SELECT JSONExtractRaw('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') AS res;
Response
┌─res──────────────┐
│ [-100,200.0,300] │
└──────────────────┘

JSONExtractRawCaseInsensitive

Добавленный в: v25.8.0 Возвращает часть JSON в виде неразобранной строки, используя регистронезависимое сопоставление ключей. Эта функция похожа на JSONExtractRaw. Синтаксис
JSONExtractRawCaseInsensitive(json [, indices_or_keys]...)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к полю. Для ключей используется регистронезависимое сопоставление String или (U)Int*
Возвращаемое значение Возвращает исходную JSON-строку извлечённого элемента. String Примеры объект
Query
SELECT JSONExtractRawCaseInsensitive('{"Object": {"key": "value"}}', 'OBJECT')
Response
{"key":"value"}

JSONExtractString

Добавленный в: v20.1.0 Разбирает JSON и извлекает значение типа String. Синтаксис
JSONExtractString(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля или более аргументов, каждый из которых может быть либо строкой, либо целым числом. String или (U)Int*
Возвращаемое значение Возвращает значение типа String, если оно существует; в противном случае возвращает пустую строку. String Примеры Пример использования
Query
SELECT JSONExtractString('{"a": "hello", "b": [-100, 200.0, 300]}', 'a') AS res;
Response
┌─res───┐
│ hello │
└───────┘

JSONExtractStringCaseInsensitive

Добавленный в: v25.8.0 Разбирает JSON и извлекает строку, используя регистронезависимое сопоставление ключей. Эта функция похожа на JSONExtractString. Синтаксис
JSONExtractStringCaseInsensitive(json [, indices_or_keys]...)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к нужному полю. Для ключей используется регистронезависимое сопоставление String или (U)Int*
Возвращаемое значение Возвращает извлечённое строковое значение или пустую строку, если ничего не найдено. String Примеры базовый
Query
SELECT JSONExtractStringCaseInsensitive('{"ABC": "def"}', 'abc')
Response
def
вложенный
Query
SELECT JSONExtractStringCaseInsensitive('{"User": {"Name": "John"}}', 'user', 'name')
Response
John

JSONExtractUInt

Добавленный в: v20.1.0 Разбирает JSON и извлекает значение типа UInt. Синтаксис
JSONExtractUInt(json [, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Список из нуля, одного или нескольких аргументов, каждый из которых может быть строкой или целым числом. String или (U)Int*
Возвращаемое значение Возвращает значение UInt, если оно существует; в противном случае возвращает 0. UInt64 Примеры Пример использования
Query
SELECT JSONExtractUInt('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', -1) AS res;
Response
┌─res─┐
│ 300 │
└─────┘

JSONExtractUIntCaseInsensitive

Добавленный в: v25.8.0 Разбирает JSON и извлекает значение типа UInt, используя регистронезависимое сопоставление ключей. Эта функция похожа на JSONExtractUInt. Синтаксис
JSONExtractUIntCaseInsensitive(json [, indices_or_keys]...)
Аргументы
  • json — JSON-строка для разбора String
  • indices_or_keys — Необязательно. Индексы или ключи для перехода к полю. Ключи используют регистронезависимое сопоставление String или (U)Int*
Возвращаемое значение Возвращает извлечённое значение типа UInt; 0, если значение не найдено или его невозможно преобразовать. UInt64 Примеры базовый
Query
SELECT JSONExtractUIntCaseInsensitive('{"COUNT": 789}', 'count')
Response
789

JSONHas

Добавленный в: v20.1.0 Проверяет наличие указанных значений в JSON-документе. Синтаксис
JSONHas(json[ ,indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора String
  • [ ,indices_or_keys, ...] — Список из нуля или более аргументов. String или (U)Int*
Возвращаемое значение Возвращает 1, если значение присутствует в json, в противном случае — 0 UInt8 Примеры Пример использования
Query
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') = 1;
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 'b', 4) = 0;
Response
1
0

JSONKey

Добавленный в: v20.1.0 Возвращает ключ поля объекта JSON по его индексу (начиная с 1). Если JSON передан в виде строки, сначала он разбирается. Второй аргумент — путь JSON для перехода к вложенным объектам. Функция возвращает имя ключа в указанной позиции. Синтаксис
JSONKey(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора. String
  • indices_or_keys — Необязательный список индексов или ключей, указывающий путь к вложенному элементу. Каждый argument может быть либо строкой (доступ по ключу), либо целым числом (доступ по индексу, начиная с 1). String или Int*
Возвращаемое значение Возвращает имя ключа в указанной позиции объекта JSON. String Примеры Пример использования
Query
SELECT JSONKey('{"a": "hello", "b": [-100, 200.0, 300]}', 1);
Response
a

JSONLength

Добавленный в: v20.1.0 Возвращает длину JSON-массива или объекта JSON. Если значение отсутствует или имеет неверный тип, возвращается 0. Синтаксис
JSONLength(json [, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора String
  • [, indices_or_keys, ...] — Необязательно. Список из нуля или более аргументов. String или (U)Int8/16/32/64
Возвращаемое значение Возвращает длину JSON-массива или объекта JSON; в противном случае возвращает 0, если значение отсутствует или имеет неверный тип. UInt64 Примеры Пример использования
Query
SELECT JSONLength('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') = 3;
SELECT JSONLength('{"a": "hello", "b": [-100, 200.0, 300]}') = 2;
Response
1
1

JSONMergePatch

Добавленный в: v23.10.0 Возвращает строку объекта JSON, полученного путём слияния нескольких объектов JSON. Синтаксис
JSONMergePatch(json1[, json2, ...])
Псевдонимы: jsonMergePatch Аргументы
  • json1[, json2, ...] — Одна или несколько строк с корректным JSON. String
Возвращаемое значение Возвращает строку с объединённым объектом JSON, если строки объектов JSON корректны. String Примеры Пример использования
Query
SELECT JSONMergePatch('{"a":1}', '{"name": "joey"}', '{"name": "tom"}', '{"name": "zoey"}') AS res;
Response
┌─res───────────────────┐
│ {"a":1,"name":"zoey"} │
└───────────────────────┘

JSONSharedDataPaths

Добавленный в: v24.8.0 Возвращает список путей, хранящихся в общей структуре данных JSON-столбца. Синтаксис
JSONSharedDataPaths(json)
Аргументы
  • json — JSON-столбец. JSON
Возвращаемое значение Возвращает массив путей, хранящихся в общей структуре данных JSON-столбца. Array(String) Примеры Пример использования
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONSharedDataPaths(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONSharedDataPaths(json)─┐
│ {"a":"42"}                           │ []                        │
│ {"b":"Hello"}                        │ ['b']                     │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ ['c']                     │
└──────────────────────────────────────┴───────────────────────────┘

JSONSharedDataPathsWithTypes

Добавленный в: v24.8.0 Возвращает список путей, хранящихся в общей структуре данных, и их типы для каждой строки в JSON-столбце. Синтаксис
JSONSharedDataPathsWithTypes(json)
Аргументы
  • json — JSON-столбец. JSON
Возвращаемое значение Возвращает отображение путей, хранящихся в общей структуре данных, и соответствующих им типов данных в JSON-столбце. Map(String, String) Примеры Пример использования
Query
CREATE TABLE test (json JSON(max_dynamic_paths=1)) ENGINE = Memory;
INSERT INTO test FORMAT JSONEachRow {"json" : {"a" : 42}}, {"json" : {"b" : "Hello"}}, {"json" : {"a" : [1, 2, 3], "c" : "2020-01-01"}}
SELECT json, JSONSharedDataPathsWithTypes(json) FROM test;
Response
┌─json─────────────────────────────────┬─JSONSharedDataPathsWithTypes(json)─┐
│ {"a":"42"}                           │ {}                                  │
│ {"b":"Hello"}                        │ {'b':'String'}                      │
│ {"a":["1","2","3"],"c":"2020-01-01"} │ {'c':'Date'}                        │
└──────────────────────────────────────┴─────────────────────────────────────┘

JSONType

Добавленный в: v20.1.0 Возвращает тип значения JSON. Если значение отсутствует, возвращается Null=0. Синтаксис
JSONType(json[, indices_or_keys, ...])
Аргументы
  • json — JSON-строка для разбора String
  • json[, indices_or_keys, ...] — Список из нуля или более аргументов, каждый из которых может быть строкой или целым числом. String или (U)Int8/16/32/64
Возвращаемое значение Возвращает тип значения JSON в виде строки; если значение не существует, возвращает Null=0 Enum Примеры Пример использования
Query
SELECT JSONType('{"a": "hello", "b": [-100, 200.0, 300]}') = 'Object';
SELECT JSONType('{"a": "hello", "b": [-100, 200.0, 300]}', 'a') = 'String';
SELECT JSONType('{"a": "hello", "b": [-100, 200.0, 300]}', 'b') = 'Array';
Response
1
1
1

JSON_EXISTS

Добавленный в: v21.8.0 Если значение существует в JSON-документе, возвращается 1. Если значение не существует, возвращается 0. Синтаксис
JSON_EXISTS(json, path)
Аргументы
  • json — Строка с корректным JSON. String
  • path — Строка, представляющая путь. String
Возвращаемое значение Возвращает 1, если значение существует в JSON-документе, иначе — 0. UInt8 Примеры Пример использования
Query
SELECT JSON_EXISTS('{"hello":1}', '$.hello');
SELECT JSON_EXISTS('{"hello":{"world":1}}', '$.hello.world');
SELECT JSON_EXISTS('{"hello":["world"]}', '$.hello[*]');
SELECT JSON_EXISTS('{"hello":["world"]}', '$.hello[0]');
Response
┌─JSON_EXISTS(⋯ '$.hello')─┐
│                        1 │
└──────────────────────────┘
┌─JSON_EXISTS(⋯llo.world')─┐
│                        1 │
└──────────────────────────┘
┌─JSON_EXISTS(⋯.hello[*]')─┐
│                        1 │
└──────────────────────────┘
┌─JSON_EXISTS(⋯.hello[0]')─┐
│                        1 │
└──────────────────────────┘

JSON_QUERY

Добавленный в: v21.8.0 Разбирает JSON и извлекает значение в виде JSON-массива или объекта JSON. Если значение отсутствует, возвращается пустая строка. Синтаксис
JSON_QUERY(json, path)
Аргументы
  • json — Строка с корректным JSON. String
  • path — Строка, задающая путь. String
Возвращаемое значение Возвращает извлечённый JSON-массив или объект JSON в виде строки либо пустую строку, если значение отсутствует. String Примеры Пример использования
Query
SELECT JSON_QUERY('{"hello":"world"}', '$.hello');
SELECT JSON_QUERY('{"array":[[0, 1, 2, 3, 4, 5], [0, -1, -2, -3, -4, -5]]}', '$.array[*][0 to 2, 4]');
SELECT JSON_QUERY('{"hello":2}', '$.hello');
SELECT toTypeName(JSON_QUERY('{"hello":2}', '$.hello'));
Response
["world"]
[0, 1, 4, 0, -1, -4]
[2]
String

JSON_VALUE

Добавленный в: v21.11.0 Разбирает JSON и извлекает значение в виде JSON-скаляра. Если значение не существует, по умолчанию возвращается пустая строка. Поведение этой функции определяется следующими настройками:
  • при SET function_json_value_return_type_allow_nullable = true возвращается NULL. Если значение имеет сложный тип (например: struct, array, map), по умолчанию возвращается пустая строка.
  • при SET function_json_value_return_type_allow_complex = true возвращается сложное значение.
Синтаксис
JSON_VALUE(json, path)
Аргументы
  • json — Строка с корректным JSON. String
  • path — Строка, задающая путь. String
Возвращаемое значение Возвращает извлечённое скалярное значение JSON в виде строки или пустую строку, если значение отсутствует. String Примеры Пример использования
Query
SELECT JSON_VALUE('{"hello":"world"}', '$.hello');
SELECT JSON_VALUE('{"array":[[0, 1, 2, 3, 4, 5], [0, -1, -2, -3, -4, -5]]}', '$.array[*][0 to 2, 4]');
SELECT JSON_VALUE('{"hello":2}', '$.hello');
SELECT JSON_VALUE('{"hello":"world"}', '$.b') settings function_json_value_return_type_allow_nullable=true;
Response
world
0
2
ᴺᵁᴸᴸ

dynamicElement

Добавленный в: v24.1.0 Извлекает столбец с указанным типом из столбца типа Dynamic. Эта функция позволяет извлекать значения определённого типа из столбца типа Dynamic. Если строка содержит значение запрошенного типа, функция возвращает это значение. Если строка содержит значение другого типа или NULL, она возвращает NULL для скалярных типов или пустой массив для типов Array. Синтаксис
dynamicElement(dynamic, type_name)
Аргументы
  • dynamic — столбец типа Dynamic, из которого извлекаются значения. Dynamic
  • type_name — имя типа варианта, который нужно извлечь (например, ‘String’, ‘Int64’, ‘Array(Int64)’).
Возвращаемое значение Возвращает значения указанного типа из столбца типа Dynamic. Для несовпадающих типов возвращает NULL (или пустой массив для типов массива). Any Примеры Извлечение различных типов из столбца типа Dynamic
Query
CREATE TABLE test (d Dynamic) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT d, dynamicType(d), dynamicElement(d, 'String'), dynamicElement(d, 'Int64'), dynamicElement(d, 'Array(Int64)'), dynamicElement(d, 'Date'), dynamicElement(d, 'Array(String)') FROM test
Response
┌─d─────────────┬─dynamicType(d)─┬─dynamicElement(d, 'String')─┬─dynamicElement(d, 'Int64')─┬─dynamicElement(d, 'Array(Int64)')─┬─dynamicElement(d, 'Date')─┬─dynamicElement(d, 'Array(String)')─┐
│ ᴺᵁᴸᴸ          │ None           │ ᴺᵁᴸᴸ                        │                       ᴺᵁᴸᴸ │ []                                │                      ᴺᵁᴸᴸ │ []                                 │
│ 42            │ Int64          │ ᴺᵁᴸᴸ                        │                         42 │ []                                │                      ᴺᵁᴸᴸ │ []                                 │
│ Hello, World! │ String         │ Hello, World!               │                       ᴺᵁᴸᴸ │ []                                │                      ᴺᵁᴸᴸ │ []                                 │
│ [1,2,3]       │ Array(Int64)   │ ᴺᵁᴸᴸ                        │                       ᴺᵁᴸᴸ │ [1,2,3]                           │                      ᴺᵁᴸᴸ │ []                                 │
└───────────────┴────────────────┴─────────────────────────────┴────────────────────────────┴───────────────────────────────────┴───────────────────────────┴────────────────────────────────────┘

dynamicType

Добавленный в: v24.1.0 Возвращает имя типа варианта для каждой строки в столбце типа Dynamic. Для строк, содержащих NULL, функция возвращает ‘None’. Для всех остальных строк она возвращает фактический тип данных, хранящийся в этой строке столбца типа Dynamic (например, ‘Int64’, ‘String’, ‘Array(Int64)’). Синтаксис
dynamicType(dynamic)
Аргументы
  • dynamic — столбец типа Dynamic для анализа. Dynamic
Возвращаемое значение Возвращает имя типа значения, хранящегося в каждой строке, или ‘None’ для значений NULL. String Примеры Проверка типов в столбце типа Dynamic
Query
CREATE TABLE test (d Dynamic) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT d, dynamicType(d) FROM test;
Response
┌─d─────────────┬─dynamicType(d)─┐
│ ᴺᵁᴸᴸ          │ None           │
│ 42            │ Int64          │
│ Hello, World! │ String         │
│ [1,2,3]       │ Array(Int64)   │
└───────────────┴────────────────┘

isDynamicElementInSharedData

Добавленный в: v24.1.0 Возвращает true для строк в столбце типа Dynamic, которые хранятся в общем формате variant, а не в виде отдельных подстолбцов. Если для столбца типа Dynamic задано ограничение max_types, значения, превышающие этот предел, сохраняются в общем бинарном формате, а не разделяются на отдельные типизированные подстолбцы. Эта функция определяет, какие строки хранятся в этом общем формате. Синтаксис
isDynamicElementInSharedData(dynamic)
Аргументы
  • dynamic — столбец типа Dynamic для анализа. Dynamic
Возвращаемое значение Возвращает true, если значение хранится в общем формате Variant, и false, если оно хранится как отдельный подстолбец или равно NULL. Bool Примеры Проверка формата хранения в столбце типа Dynamic с ограничением max_types
Query
CREATE TABLE test (d Dynamic(max_types=2)) ENGINE = Memory;
INSERT INTO test VALUES (NULL), (42), ('Hello, World!'), ([1, 2, 3]);
SELECT d, isDynamicElementInSharedData(d) FROM test;
Response
┌─d─────────────┬─isDynamicElementInSharedData(d)─┐
│ ᴺᵁᴸᴸ          │ false                           │
│ 42            │ false                           │
│ Hello, World! │ true                            │
│ [1,2,3]       │ true                            │
└───────────────┴─────────────────────────────────┘

isValidJSON

Добавленный в: v20.1.0 Проверяет, является ли переданная строка корректным JSON. Синтаксис
isValidJSON(json)
Аргументы
  • json — строка JSON, которую нужно проверить String
Возвращаемое значение Возвращает 1, если строка содержит корректный JSON, иначе 0. UInt8 Примеры Пример использования
Query
SELECT isValidJSON('{"a": "hello", "b": [-100, 200.0, 300]}') = 1;
SELECT isValidJSON('not JSON') = 0;
Response
1
0
Доступ к JSON-массивам и объектам JSON с помощью целых чисел
Query
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 0);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 1);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 2);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', -1);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', -2);
SELECT JSONHas('{"a": "hello", "b": [-100, 200.0, 300]}', 3);
Response
0
1
1
1
1
1
0

simpleJSONExtractBool

Добавленный в: v21.4.0 Разбирает значение true/false из поля с именем field_name. Результат — UInt8. Синтаксис
simpleJSONExtractBool(json, field_name)
Псевдонимы: visitParamExtractBool Аргументы
  • json — JSON, в котором выполняется поиск поля. String
  • field_name — Имя искомого поля. const String
Возвращаемое значение Возвращает 1, если значение поля равно true, в противном случае — 0. Это означает, что функция будет возвращать 0, в том числе (и не только) в следующих случаях:
  • Если поле не существует.
  • Если поле содержит true в виде строки, например: {"field":"true"}.
  • Если поле содержит 1 в виде числового значения. UInt8
Примеры Пример использования
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":false,"bar":true}');
INSERT INTO jsons VALUES ('{"foo":"true","qux":1}');

SELECT simpleJSONExtractBool(json, 'bar') FROM jsons ORDER BY json;
SELECT simpleJSONExtractBool(json, 'foo') FROM jsons ORDER BY json;
Response
0
1
0
0

simpleJSONExtractFloat

Добавленный в: v21.4.0 Разбирает Float64 из значения поля с именем field_name. Если field_name — строковое поле, пытается разобрать число из начала строки. Если поле не существует или существует, но не содержит числа, возвращается 0. Синтаксис
simpleJSONExtractFloat(json, field_name)
Псевдонимы: visitParamExtractFloat Аргументы
  • json — JSON, в котором ищется поле. String
  • field_name — Имя искомого поля. const String
Возвращаемое значение Возвращает число, разобранное из значения поля, если поле существует и содержит число; в противном случае — 0. Float64 Примеры Пример использования
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"-4e3"}');
INSERT INTO jsons VALUES ('{"foo":-3.4}');
INSERT INTO jsons VALUES ('{"foo":5}');
INSERT INTO jsons VALUES ('{"foo":"not1number"}');
INSERT INTO jsons VALUES ('{"baz":2}');

SELECT simpleJSONExtractFloat(json, 'foo') FROM jsons ORDER BY json;
Response
0
-4000
0
-3.4
5

simpleJSONExtractInt

Добавленный в: v21.4.0 Извлекает Int64 из значения поля с именем field_name. Если field_name — строковое поле, функция пытается разобрать число из начала строки. Если поле не существует или существует, но не содержит числа, возвращается 0. Синтаксис
simpleJSONExtractInt(json, field_name)
Псевдонимы: visitParamExtractInt Аргументы
  • json — JSON, в котором выполняется поиск поля. String
  • field_name — Имя искомого поля. const String
Возвращаемое значение Возвращает число, разобранное из поля, если поле существует и содержит число, в противном случае возвращает 0 Int64 Примеры Пример использования
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"-4e3"}');
INSERT INTO jsons VALUES ('{"foo":-3.4}');
INSERT INTO jsons VALUES ('{"foo":5}');
INSERT INTO jsons VALUES ('{"foo":"not1number"}');
INSERT INTO jsons VALUES ('{"baz":2}');

SELECT simpleJSONExtractInt(json, 'foo') FROM jsons ORDER BY json;
Response
0
-4
0
-3
5

simpleJSONExtractRaw

Добавленный в: v21.4.0 Возвращает значение поля с именем field_name в виде String, включая разделители. Синтаксис
simpleJSONExtractRaw(json, field_name)
Псевдонимы: visitParamExtractRaw Аргументы
  • json — JSON, в котором выполняется поиск поля. String
  • field_name — Имя искомого поля. const String
Возвращаемое значение Возвращает значение поля в виде строки, включая разделители, если поле существует; в противном случае возвращается пустая строка String Примеры Пример использования
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"-4e3"}');
INSERT INTO jsons VALUES ('{"foo":-3.4}');
INSERT INTO jsons VALUES ('{"foo":5}');
INSERT INTO jsons VALUES ('{"foo":{"def":[1,2,3]}}');
INSERT INTO jsons VALUES ('{"baz":2}');

SELECT simpleJSONExtractRaw(json, 'foo') FROM jsons ORDER BY json;
Response
"-4e3"
-3.4
5
{"def":[1,2,3]}

simpleJSONExtractString

Добавленный в: v21.4.0 Извлекает строку String в двойных кавычках из значения поля с именем field_name. Подробности реализации В настоящее время не поддерживаются кодовые точки в формате \uXXXX\uYYYY, не относящиеся к базовой многоязычной плоскости (они преобразуются в CESU-8 вместо UTF-8). Синтаксис
simpleJSONExtractString(json, field_name)
Псевдонимы: visitParamExtractString Аргументы
  • json — JSON, в котором выполняется поиск поля. String
  • field_name — Имя поля, которое нужно найти. const String
Возвращаемое значение Возвращает неэкранированное значение поля в виде строки, включая разделители. Если поле не содержит строку в двойных кавычках, не удаётся снять экранирование или поле не существует, возвращается пустая строка String Примеры Пример использования
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"\\n\\u0000"}');
INSERT INTO jsons VALUES ('{"foo":"\\u263"}');
INSERT INTO jsons VALUES ('{"foo":"\\u263a"}');
INSERT INTO jsons VALUES ('{"foo":"hello}');

SELECT simpleJSONExtractString(json, 'foo') FROM jsons ORDER BY json;
Response
\n\0


simpleJSONExtractUInt

Добавленный в: v21.4.0 Извлекает UInt64 из значения поля с именем field_name. Если field_name — строковое поле, функция пытается разобрать число из начала строки. Если поле не существует или существует, но не содержит числа, возвращает 0. Синтаксис
simpleJSONExtractUInt(json, field_name)
Псевдонимы: visitParamExtractUInt Аргументы
  • json — JSON, в котором выполняется поиск поля. String
  • field_name — Имя искомого поля. const String
Возвращаемое значение Возвращает число, разобранное из поля, если поле существует и содержит число; в противном случае — 0 UInt64 Примеры Пример использования
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"4e3"}');
INSERT INTO jsons VALUES ('{"foo":3.4}');
INSERT INTO jsons VALUES ('{"foo":5}');
INSERT INTO jsons VALUES ('{"foo":"not1number"}');
INSERT INTO jsons VALUES ('{"baz":2}');

SELECT simpleJSONExtractUInt(json, 'foo') FROM jsons ORDER BY json;
Response
0
4
0
3
5

simpleJSONHas

Добавленный в: v21.4.0 Проверяет, существует ли поле с именем field_name. Синтаксис
simpleJSONHas(json, field_name)
Псевдонимы: visitParamHas Аргументы
  • json — JSON, в котором ищется поле. String
  • field_name — Имя искомого поля. const String
Возвращаемое значение Возвращает 1, если поле существует, иначе — 0 UInt8 Примеры Пример использования
Query
CREATE TABLE jsons
(
    `json` String
)
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO jsons VALUES ('{"foo":"true","qux":1}');

SELECT simpleJSONHas(json, 'foo') FROM jsons;
SELECT simpleJSONHas(json, 'bar') FROM jsons;
Response
1
0

toJSONString

Добавленный в: v21.7.0 Сериализует значение в JSON-представление. Поддерживаются различные типы данных и вложенные структуры. 64-битные целые числа и более крупные (например, UInt64 или Int128) по умолчанию заключаются в кавычки. Это поведение контролируется параметром output_format_json_quote_64bit_integers. Специальные значения NaN и inf заменяются на null. Чтобы они отображались, включите настройку output_format_json_quote_denormals. При сериализации значения Enum функция выводит его имя. См. также: Синтаксис
toJSONString(value)
Аргументы
  • value — Значение для сериализации. Значение может быть любого типа данных. Any
Возвращаемое значение Возвращает JSON-представление значения. String Примеры Сериализация Map
Query
SELECT toJSONString(map('key1', 1, 'key2', 2));
Response
┌─toJSONString(map('key1', 1, 'key2', 2))─┐
│ {"key1":1,"key2":2}                     │
└─────────────────────────────────────────┘
Специальные значения
Query
SELECT toJSONString(tuple(1.25, NULL, NaN, +inf, -inf, [])) SETTINGS output_format_json_quote_denormals = 1;
Response
┌─toJSONString(tuple(1.25, NULL, NaN, plus(inf), minus(inf), []))─┐
│ [1.25,null,"nan","inf","-inf",[]]                               │
└─────────────────────────────────────────────────────────────────┘
Последнее изменение 10 июня 2026 г.