暂无图片
暂无图片
2
暂无图片
暂无图片
1
暂无图片

OceanBase SQL语句赋值运算符

2024-05-05
209

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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

筱悦星辰
暂无图片
10月前
评论
暂无图片 0
生活是公正的,当你以一颗宽大而柔软的心对待别人,你也会得到馈赠。
10月前
暂无图片 点赞
评论