MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  演算子の優先順位

12.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), :=

= の優先順位は、比較演算子 (=) として使用されるのか、割り当て演算子 (=) として使用されるのかによって異なります。 比較演算子として使用する場合、<=>, >=, >, <=, <, <>, !=, 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

関連キーワード:  関数, 空間, リファレンス, マニュアル, 順序, 評価, 比較, 全文, ジオメトリ, 作成