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\"} | +-----------------------------+