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

Описание

Формат Values выводит каждую строку в круглых скобках.
  • Строки разделяются запятыми, без запятой после последней строки.
  • Значения внутри скобок также разделяются запятыми.
  • Числа выводятся в десятичном формате без кавычек.
  • Массивы выводятся в [].
  • Строки, даты, а также значения даты и времени выводятся в кавычках.
  • Правила экранирования и парсинга аналогичны формату TabSeparated.
При форматировании дополнительные пробелы не вставляются, но при парсинге они допустимы и пропускаются (кроме пробелов внутри значений массива, где они не допускаются). NULL представляется как NULL. Минимальный набор символов, которые нужно экранировать при передаче данных в формате Values:
  • одинарные кавычки
  • обратные косые черты
Это формат, используемый в INSERT INTO t VALUES ..., но его также можно применять для форматирования результатов запроса.

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

Вставка данных

Формат Values используется оператором INSERT, поэтому любой оператор INSERT ... VALUES уже работает с ним. Предложение FORMAT Values можно указать явно, а строки можно передавать из потока или файла. Каждая строка представляет собой кортеж в скобках, элементы которого разделены запятыми, а сами кортежи также разделяются запятыми:
Query
CREATE TABLE t (id UInt32, name String, values Array(UInt32)) ENGINE = Memory;

INSERT INTO t FORMAT Values (1, 'a', [10, 20]), (2, 'b', [30]);

SELECT * FROM t ORDER BY id;
Response
┌─id─┬─name─┬─values──┐
│  1 │ a    │ [10,20] │
│  2 │ b    │ [30]    │
└────┴──────┴─────────┘

Использование выражений во входных данных

В отличие от большинства входных форматов, Values может вычислять SQL-выражения в каждом поле, а не только принимать литералы. Это поведение контролируется input_format_values_interpret_expressions (включено по умолчанию): если поле не удается прочитать быстрым стриминговым парсером, ClickHouse переключается на SQL-парсер и интерпретирует это поле как выражение.
Query
CREATE TABLE prices (item String, total UInt32) ENGINE = Memory;

INSERT INTO prices FORMAT Values ('apple', 3 * 4), ('pear', length('hello') + 10);

SELECT * FROM prices ORDER BY total;
Response
┌─item──┬─total─┐
│ apple │    12 │
│ pear  │    15 │
└───────┴───────┘

Выборка данных

Формат Values также можно использовать для вывода результатов запроса. Числа записываются без кавычек, массивы — в [], а строки и даты — в одинарных кавычках; одинарные кавычки и обратные косые черты внутри строк экранируются обратной косой чертой, а NULL записывается как NULL:
Query
SELECT 1 AS a, 'O''Reilly' AS b, NULL::Nullable(String) AS c FORMAT Values;
Response
(1,'O\'Reilly',NULL)

Настройки формата

НастройкаОписаниеПо умолчанию
input_format_values_interpret_expressionsесли поле не удалось разобрать с помощью стримингового парсера, запустить SQL-парсер и попытаться интерпретировать его как SQL-выражение.true
input_format_values_deduce_templates_of_expressionsесли поле не удалось разобрать с помощью стримингового парсера, запустить SQL-парсер, определить шаблон SQL-выражения, попытаться разобрать по этому шаблону все строки, а затем интерпретировать выражение для всех строк.true
input_format_values_accurate_types_of_literalsпри разборе и интерпретации выражений с использованием шаблона проверять фактический тип литерала, чтобы избежать возможных проблем с переполнением и потерей точности.true
Последнее изменение 25 июня 2026 г.