メインコンテンツへスキップ
メインコンテンツへスキップ

SET ステートメント

SET param = value

現在のセッションに対して、param設定value を割り当てます。この方法でサーバー設定を変更することはできません。

指定した SETTINGS PROFILE に含まれるすべての設定値を、1つのクエリでまとめて設定することもできます。

SET profile = 'profile-name-from-the-settings-file'

boolean 型の設定を true にする場合、値の指定を省略して短縮記法を使うことができます。設定名だけが指定されていると、自動的に 1(true)として解釈されます。

-- These are equivalent:
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';

-- 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 型での使用例を含むクエリパラメータの詳細については、Defining and Using Query Parameters を参照してください。

詳細については、Settings を参照してください。