MySQL 9.0 版本資訊
運算子優先順序顯示在以下列表中,從最高優先順序到最低優先順序。在同一行顯示的運算子具有相同的優先順序。
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), :=
=
的優先順序取決於它是用作比較運算子 (=
) 還是賦值運算子 (=
)。當用作比較運算子時,它的優先順序與 <=>
、>=
、>
、<=
、<
、<>
、!=
、IS
、LIKE
、REGEXP
和 IN()
相同。當用作賦值運算子時,它的優先順序與 :=
相同。第 15.7.6.1 節,〈SET 變數賦值語法〉和第 11.4 節,〈使用者定義變數〉說明 MySQL 如何判斷應採用哪種 =
的解釋。
對於在運算式中處於相同優先順序的運算子,評估從左到右進行,但賦值除外,賦值從右到左評估。
某些運算子的優先順序和含義取決於 SQL 模式
依預設,
||
是邏輯OR
運算子。啟用PIPES_AS_CONCAT
時,||
是字串串連,其優先順序介於^
和一元運算子之間。依預設,
!
的優先順序高於NOT
。啟用HIGH_NOT_PRECEDENCE
時,!
和NOT
具有相同的優先順序。
運算子的優先順序決定運算式中項目的評估順序。若要覆寫此順序並明確群組項目,請使用括號。例如
mysql> SELECT 1+2*3;
-> 7
mysql> SELECT (1+2)*3;
-> 9