次のリストには、演算子の優先順位をもっとも高いものから順番に示しています。同じ行に並んで記載されている演算子は、優先順位が同じものです。
INTERVAL
BINARY, COLLATE
!
- (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
&&, AND
XOR
||, OR
= (assignment), :=
=
の優先順位は、比較演算子
(=
)
として使用されるのか、割り当て演算子
(=
)
として使用されるのかによって異なります。比較演算子として使用される場合は、優先順位が
<=>
、>=
、>
、<=
、<
、<>
、!=
、IS
、LIKE
、REGEXP
、および
IN
と同じです。割り当て演算子として使用される場合は、優先順位が
:=
と同じです。セクション13.7.4「SET 構文」およびセクション9.4「ユーザー定義変数」では、適用される
=
の解釈が MySQL
でどのように決定されるのかについて説明されています。
一部の演算子の意味は、SQL モードによって異なります。
デフォルトでは、
||
は論理OR
演算子です。PIPES_AS_CONCAT
が有効になっている場合は、||
は^
と単項演算子間の優先順位を持つ文字列連結です。デフォルトでは、
!
はNOT
よりも高い優先順位です。HIGH_NOT_PRECEDENCE
が有効になっている場合は、!
とNOT
の優先順位は同じです。
セクション5.1.7「サーバー SQL モード」を参照してください。
演算子の優先順位によって、式の項の評価順序が決まります。この順序をオーバーライドし、明示的に項をグループ化するには、丸括弧を使用します。例:
mysql> SELECT 1+2*3;
-> 7
mysql> SELECT (1+2)*3;
-> 9