MySQLの演算子の優先順位は結果セットにどう影響するのか
MySQLでは、すべての式が演算子の優先順位に従って評価されます。同じ優先順位を持つ演算子は同一行にまとめられており、その一覧は以下の通りです(上にあるほど優先順位が高い)。
INTERVAL BINARY, COLLATE ! - (単項マイナス), ~ (単項ビット反転) ^ *, /, DIV, %, MOD -, + <<, >> & | =, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN BETWEEN, CASE, WHEN, THEN, ELSE NOT &&, AND XOR ||, OR :=
同じ優先順位レベルの演算子が1つの式の中に並んでいる場合、評価は左から右へと進みます。
具体例
次の例は、演算子の優先順位が結果セットにどのような影響を与えるかを示したものです。
mysql> Select 5+3/2-2; +---------+ | 5+3/2-2 | +---------+ | 4.5000 | +---------+ 1 row in set (0.00 sec)
この評価では、MySQLはまず「/」(除算)を計算します。「/」は「+」(加算)や「-」(減算)よりも優先順位が高いためです。つまり、内部的には 5 + (3 / 2) - 2 = 5 + 1.5 - 2 = 4.5 という順序で処理されています。
括弧で優先順位を制御する
もし計算順序を変えたい場合は、括弧( )を使用します。例えば (5+3)/2-2 と書けば加算が先に行われ、結果は 2.0000 となります。このように、演算子の優先順位を正しく理解しておくことは、意図しない計算結果を避けるために非常に重要です。
-
MySQLで結果セットを指定した順序どおりに取得する方法
MySQLでIN句を使ってレコードを取得すると、通常はテーブル内の格納順どおりに結果が返されます。しかし、「指定した値の並び順どおりに結果セットを取得したい」というケースもあります。そんなときは、FIND_IN_SET()関数とORDER BY句を組み合わせることで簡単に実現できます。サンプルテーブルを作成するまず、動作確認用のテーブルを作成します。mysql> create table DemoTable1563 -> ( -> StudentId int, -> StudentName varchar(20) -> );Query OK
-
MySQLのSET演算子で初期化されたすべての変数を一覧表示する方法
MySQLのSET演算子で初期化されたすべての変数を一覧表示する方法MySQLでは、performance_schema.user_variables_by_thread テーブルを参照することで、SET文(SET演算子)によって初期化されたすべてのユーザー定義変数を一覧表示できます。基本構文は以下のとおりです。select * from performance_schema.user_variables_by_thread;変数を設定するまず、SET文を使って変数を設定してみましょう。以下の例では、@FirstName に「John」、@LastName に「Doe」という値をそれぞれ代入し