MySQL の演算子と優先順位
ここでは MySQL の基本の演算子と優先順位についてご説明します。
MySQL の基本の比較演算子
MySQL で数値や文字列などを比較するのに使う、基本の比較演算子には次のようなものがあります。
- A = B(A と B が等しい)
- A <> B(A と B が等しくない。 MySQL では != も使えますが <> のほうが標準です。)
- A > B(A より B が小さい)
- A >= B(A が B 以上)
- A < B(A より B が大きい)
- A <= B(A が B 以下)
比較の評価の結果は 1 (TRUE)、0 (FALSE)、または NULL のどれかになります。
A または B、もしくは A と B 両方が NULL の時は評価の結果が NULL になります。
<=> という NULL セーフの比較演算子もあり、基本的には = と同じですが、A と B の両方が NULL の時の評価の結果が 1 (TRUE) になり、片方が NULL の時に 0 (FALSE) になります。
MySQL の基本の論理演算子
MySQL で複数のブール式を合わせて評価する時に使われる、基本の論理演算子には次のようなものがあります。
- 式1 AND 式2 (式1 と 式2 のブール式が両方が 1 (TRUE) の時に 1 (TRUE) を返す)
- 式1 OR 式2 (式1 と 式2 のブール式の片方が 1 (TRUE) の時に 1 (TRUE) を返す)
- 式1 XOR 式2(式1 と 式2 のブール式の結果が同じ時は 0 (FALSE)、違う時は 1 (TRUE) を返す)
- NOT 式(式が 1 (TRUE) の時に 0 (FALSE) を返し、0 (FALSE) の時に 1 (TRUE) を返す)
式1, 式2 が NULL になる時の動きは論理演算子によって少し違います。
NULL の時を含んだ、それぞれの論理演算子の評価の結果は次のようになります。
MySQL の演算子の優先順位
MySQL の演算子には優先順位があり、優先順位が高いものから順番に評価されます。
MySQL の演算子の優先順位は次の通りです。
INTERVAL
BINARY, COLLATE
!
- (符号の反転), ~ (ビットの反転)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (比較), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN, MEMBER OF
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
AND, &&
XOR
OR, ||
= (代入), :=
例えば AND より OR のほうが優先順位が高いので、「式1 OR 式2 AND 式3」の場合は 「式2 AND 式3」が先に評価されます。
上の基本の比較・論理演算子でご紹介していない演算子は、別のページでご紹介していきたいと思います。
以上、MySQL の基本の演算子と優先順位についてをご説明しました。