跳转到主内容
跳转到主内容

SET 语句

SET param = value

value 赋给当前会话的 param setting。无法通过这种方式更改服务器设置

你也可以在单个查询中,将指定 SETTINGS PROFILE 中的所有设置值一次性应用。

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

对于值为 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 中的有效名称。无效的时区名称将导致错误。

有关 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