メインコンテンツへスキップ
入力出力エイリアス

説明

Values フォーマットでは、各行は括弧で囲んで出力されます。
  • 行はカンマで区切られ、最後の行の後にはカンマは付きません。
  • 括弧内の値もカンマ区切りです。
  • 数値は引用符なしの10進数形式で出力されます。
  • Array は [] で出力されます。
  • 文字列、日付、および時刻を含む日付は引用符付きで出力されます。
  • エスケープ規則とパースは TabSeparated フォーマットと似ています。
フォーマット時には余分なスペースは挿入されませんが、パース時にはスペースを使用でき、読み飛ばされます (ただし、Array の値内のスペースは使用できません) 。 NULLNULL として表されます。 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 フォーマットは、クエリ結果の出力にも使用できます。数値は引用符なしで記述し、配列は []、文字列と日付はシングルクォートで囲みます。文字列内のシングルクォートとバックスラッシュは、バックスラッシュでエスケープします。NULLNULL と記述します。
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
最終更新日 2026年6月25日