メインコンテンツへスキップ
SET param = value
現在のセッションに対して、設定 paramvalue を割り当てます。この方法では、サーバー設定 は変更できません。 また、指定した設定プロファイルに含まれるすべての値を、1 つのクエリでまとめて設定することもできます。
SET profile = 'profile-name-from-the-settings-file'
true に設定するブール型の設定では、値の指定を省略した短縮構文を使用できます。設定名だけを指定した場合は、自動的に 1 (true) に設定されます。
-- これらは同等です:
SET force_index_by_date = 1
SET force_index_by_date

SET TIME ZONE

SET TIME ZONE [=] 'timezone'
セッションのタイムゾーンを設定します。これは SET session_timezone = 'timezone' のエイリアスで、PostgreSQL やその他の SQL データベースとの互換性のために提供されています。 多くの SQL クライアント、ORM、JDBCドライバーは、接続時に自動的に SET TIME ZONE を実行します。この構文により、そのようなツールを ClickHouse でもカスタムの回避策なしで利用できます。
SET TIME ZONE 'UTC';
SET TIME ZONE 'Europe/Amsterdam';
SET TIME ZONE 'America/New_York';

-- 現在のセッションのタイムゾーンを確認する
SELECT getSetting('session_timezone');
timezone の値には、IANA Time Zone Database にある有効な名前を指定する必要があります。無効な timezone 名を指定すると、エラーになります。 session_timezone 設定の詳細については、session_timezone を参照してください。

クエリパラメータの設定

SET ステートメントは、パラメータ名の先頭に param_ を付けることで、クエリパラメータを定義する際にも使用できます。 クエリパラメータを使うと、実行時に実際の値に置き換えられるプレースホルダーを含む汎用的なクエリを記述できます。
SET param_name = value
クエリ内でクエリパラメータを使用するには、{name: datatype} という構文で参照します。
SET param_id = 42;
SET param_name = 'John';

SELECT * FROM users
WHERE id = {id: UInt32}
AND name = {name: String};
クエリパラメータは、同じクエリを異なる値で複数回実行する必要がある場合に特に便利です。 Identifier 型での使用を含むクエリパラメータの詳細については、クエリパラメータの定義と使用を参照してください。 詳しくは、Settingsを参照してください。
最終更新日 2026年6月10日