Lindorm SQL支持為每個連接會話設置獨立的會話變量以控制會話的狀態,這些狀態變更只會對當前會話生效,不影響其他會話。
引擎與版本
該語法適用于寬表引擎和時序引擎。
要求Lindorm SQL為2.8.4.0以上版本。如何查看Lindorm SQL的版本,請參見SQL版本說明。
語法
設置會話變量
set_variable_statement ::= SET [SESSION] variable_identifier '=' literal
查詢會話變量
query_variable_statement ::= SELECT @@variable_identifier
使用說明
變量名(variable_identifier)
變量名稱的詞法規則與一般標識符相同,標識要設置的變量名稱。標識符的說明,請參見標識符。
會話配置項(SESSION)
SET
語句設置的會話配置項優先級高于ALTER SYSTEM
設置的系統全局配置項,當兩者沖突時,以SET
語句設置的會話配置項的值為準。會話配置項設置后會對SQL引擎的行為產生影響,因此建議您充分理解參數含義后再謹慎修改。
配置項名稱 | 數據類型 | 適用引擎 | 說明 |
TIME_ZONE 重要 僅MySQL協議支持該配置項。MySQL協議連接方式,請參見使用MySQL協議(推薦)。 | 字符串 | 寬表引擎 | 設置當前連接會話的時區,默認是東八區。 |
SQL_MODE 重要 僅Lindorm SQL版本為2.8.4.8及以上版本支持。 | 字符串 |
| 設置SQL引擎的解析行為模式。您可以通過在字符串中間添加半角逗號( 目前僅支持設置為 |
示例
修改當前會話時區
修改時區前,執行以下語句,查看當前會話時區。
SELECT @@TIME_ZONE;
返回結果:
+-------------+ | @@TIME_ZONE | +-------------+ | +08:00 | +-------------+
修改當前會話時區為
UTC
時區。SET TIME_ZONE='UTC';
再次執行
SELECT @@TIME_ZONE;
語句,驗證是否修改成功。返回結果如下:+-------------+ | @@TIME_ZONE | +-------------+ | UTC | +-------------+
說明會話時區與時間戳類型數據關系的完整示例,請參見如何設置連接時區。
設置SQL引擎的解析行為模式
先直接查詢一個字符串常量表達式。
SELECT '{\"key\":\"va\\lu\'e\r\n\"}';
返回結果:
+---------------------+ | EXPR$0 | +---------------------+ | {"key":"va\lu'e "} | +---------------------+
設置SQL引擎的解析行為模式,解析字符串常量時,不使用反斜線(
\
)作為轉義符。SET SQL_MODE='NO_BACKSLASH_ESCAPES';
再次執行
SELECT '{\"key\":\"va\\lu\'e\r\n\"}';
語句,驗證是否修改成功。返回結果如下:+-----------------------------+ | EXPR$0 | +-----------------------------+ | {\"key\":\"va\\lu\'e\r\n\"} | +-----------------------------+