OceanBaseデータベースは、一般的な賦値演算子をサポートしています。
論理演算子の概要
演算子 |
演算子 |
意味 |
|---|---|---|
| := | 一元 | 演算子の右側の値を左側の変数に代入します |
| = | 一元 | 値の代入(SET ステートメントの一部、または UPDATE ステートメント内の SET 句の一部として使用されます) |
説明
賦値演算子 :=
:= の右側の値は、リテラル、変数、またはクエリの結果などの有効な式です(その値がスカラーである場合に限ります)。同一の SET ステートメント内で複数回の代入を実行することができます。同一のステートメント内で複数回の代入を行うことも可能です。
= とは異なり、:= 演算子は比較演算子として解釈されることはありません。これは、SET ステートメントだけでなく、任意の有効なSQLステートメントで := を使用して変数に値を代入できることを意味します。
例:
obclient> SELECT @var1 := 1, @var2;
+------------+-------+
| @var1 := 1 | @var2 |
+------------+-------+
| 1 | NULL |
+------------+-------+
1 row in set
obclient> SELECT @var1:=COUNT(*) FROM t1;
+-----------------+
| @var1:=COUNT(*) |
+-----------------+
| 5 |
+-----------------+
1 row in set
obclient> SELECT @var1;
+-------+
| @var1 |
+-------+
| 5 |
+-------+
1 row in set
賦値演算子 =
= 演算子は、以下の2つの場合に代入を実行します:
SETステートメントでは、=は代入演算子と見なされ、演算子の右側の値を左側の変数に代入します。したがって、SETステートメント内で使用する場合、=と:=の処理方法は同じです。UPDATEステートメントのSET句では、=も代入演算子として機能します。この場合、UPDATEステートメントのWHERE条件を満たすと、演算子の右側の値が左側の列に代入されます。UPDATEステートメントの同一のSET句内で複数回の代入を行うことができます。
上記の2つの場合を除き、= は比較演算子と見なされます。
obclient> SELECT * FROM t1;
+------+------+
| c1 | c2 |
+------+------+
| 1 | 1 |
+------+------+
1 row in set
obclient> UPDATE t1 SET c1 = c1 + 1, c2 = c1;
Query OK, 1 row affected
Rows matched: 1 Changed: 1 Warnings: 0
obclient> SELECT * FROM t1;
+------+------+
| c1 | c2 |
+------+------+
| 2 | 2 |
+------+------+
1 row in set