文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  運算子優先順序

14.4.1 運算子優先順序

運算子優先順序如下列表所示,從最高優先順序到最低優先順序。在同一行顯示的運算子具有相同的優先順序。

INTERVAL
BINARY, COLLATE
!
- (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN, MEMBER OF
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
AND, &&
XOR
OR, ||
= (assignment), :=

= 的優先順序取決於它是用作比較運算子 (=) 還是賦值運算子 (=)。當用作比較運算子時,它具有與 <=>>=><=<<>!=ISLIKEREGEXPIN() 相同的優先順序。當用作賦值運算子時,它具有與 := 相同的優先順序。第 15.7.6.1 節,「變數賦值的 SET 語法」第 11.4 節,「使用者定義變數」,說明了 MySQL 如何判斷應該套用 = 的哪一種解譯。

對於在運算式內具有相同優先順序的運算子,評估會從左到右進行,但賦值運算會從右到左進行。

某些運算子的優先順序和含義取決於 SQL 模式

  • 預設情況下,|| 是邏輯 OR 運算子。啟用 PIPES_AS_CONCAT 時,|| 是字串串聯,優先順序介於 ^ 和一元運算子之間。

  • 預設情況下,! 的優先順序高於 NOT。啟用 HIGH_NOT_PRECEDENCE 時,!NOT 具有相同的優先順序。

請參閱第 7.1.11 節,「伺服器 SQL 模式」

運算子的優先順序決定運算式中各項的評估順序。若要覆寫此順序並明確將各項分組,請使用括號。例如

mysql> SELECT 1+2*3;
        -> 7
mysql> SELECT (1+2)*3;
        -> 9