OceanBase 数据库支持常用的赋值运算符。
逻辑运算符概览
| 运算符 | 操作数 | 含义 |
|---|---|---|
| := | 一元 | 将运算符右侧的值赋值给左侧的变量 |
| = | 一元 | 赋值(作为 SET 语句的一部分,或作为 UPDATE 语句中的 SET 子句的一部分) |
说明
赋值运算符 :=
:= 右侧的值可以是一个字面量、变量或者合法的表达式,包括查询的结果(前提是该值为标量值)。您可以在同一个 SET 语句中执行多个赋值。您可以在同一个语句执行多次赋值。
与 = 不同,:= 运算符永远不会被解析为比较运算符。这意味着您可以在任何有效的 SQL 语句使用 := 值赋给变量,而不只是在 SET 语句中使用。
示例如下:
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
赋值运算符=
= 运算符在以下两种情况下执行赋值:
在
SET语句中,=被视为赋值运算符,用于将运算符右侧的值赋值给左侧的变量。所以,在SET语句中使用时,=与:=的处理方式相同。在
UPDATE语句的SET子句中,=还充当赋值运算符。在这种情况下,如果满足UPDATE语句的WHERE条件,就会将运算符右侧的值赋值给左侧的列。您可以在UPDATE语句的同一个SET子句中进行多个赋值。
除以上两种情况,= 都被视为比较运算符。
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 「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




