SET param = value現在のセッションに対して、設定 param に value を割り当てます。この方法では、サーバー設定 は変更できません。
また、指定した設定プロファイルに含まれるすべての値を、1 つのクエリでまとめて設定することもできます。
SET profile = 'profile-name-from-the-settings-file'true に設定するブール型の設定では、値の指定を省略した短縮構文を使用できます。設定名だけを指定した場合は、自動的に 1 (true) に設定されます。
-- These are equivalent:
SET force_index_by_date = 1
SET force_index_by_dateSET 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';
-- Verify the current session time zone
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を参照してください。