次のリストには、演算子の優先順位をもっとも高いものから順番に示しています。 同じ行に並んで記載されている演算子は、優先順位が同じものです。
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()
と同じ優先順位を持ちます。 割り当て演算子として使用される場合は、優先順位が :=
と同じです。セクション13.7.6.1「変数代入の SET 構文」およびセクション9.4「ユーザー定義変数」では、適用される =
の解釈が MySQL でどのように決定されるのかについて説明されています。
式内で同じ優先順位レベルで発生する演算子の場合、評価は左から右に進みますが、割当てが右から左に評価される点が異なります。
一部の演算子の優先順位と意味は、SQL モードによって異なります:
デフォルトでは、
||
は論理OR
演算子です。PIPES_AS_CONCAT
が有効になっている場合は、||
は^
と単項演算子間の優先順位を持つ文字列連結です。デフォルトでは、
!
はNOT
よりも高い優先順位です。HIGH_NOT_PRECEDENCE
が有効になっている場合は、!
とNOT
の優先順位は同じです。
セクション5.1.11「サーバー SQL モード」を参照してください。
演算子の優先順位によって、式の項の評価順序が決まります。 この順序をオーバーライドし、明示的に項をグループ化するには、丸括弧を使用します。 例:
mysql> SELECT 1+2*3;
-> 7
mysql> SELECT (1+2)*3;
-> 9