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

OceanBase SQL语句用户自定义变量

2024-04-28
594

存储在用户自定义的变量中的值,可以被其他语句引用,以实现将值从一个语句传递到另一个语句。

用户变量的书写格式为 @var_name,其中变量名 var_name 由字母、数字、._ 和 $ 组成。 如果将用户变量名称引用为字符串或标识符(例如,@'my-obvar'、@"my-obvar" 或 @`my-obvar`),则该名称可以包含其他字符。用户变量名不区分大小写,名称的最大长度为 64 个字符。

用户自定义变量只用于指定会话。一个客户端定义的用户变量对其他客户端不可见或不可使用。当该客户端退出时,将自动释放指定客户端会话的所有变量。

设置用户定义变量的一种方法是使用 SET 语句:

SET @var_name = expr [, @var_name = expr] ...

详细信息,请参见 SET

对于 SET 语句,= 或 := 都可以用作赋值运算符。

可以为用户变量分配以下数据类型的值:整数、十进制、浮点、二进制或非二进制字符串,或 NULL 值。十进制和实数值的赋值不会保留值的精度或小数位数。其他数据类型的值被转换为允许的数据类型。例如,时间或空间数据类型的值被转换为二进制字符串。

要读取一个用户自定义变量,可以使用 SELECT 语句。

如果为用户变量分配了非二进制(字符)字符串值,则它具有与字符串相同的字符集和字符序。分配给用户变量的十六进制或位值被视为二进制字符串。要将十六进制或位值作为数字分配给用户变量,可以添加 0 或使用 CAST 函数 CAST(... AS UNSIGNED)

obclient> SET @v1 = X'43';
obclient> SET @v2 = X'43'+0;
obclient> SET @v3 = CAST(X'43' AS UNSIGNED);
obclient> SELECT @v1, @v2, @v3;
+------+------+------+
| @v1  | @v2  | @v3  |
+------+------+------+
| C    |   67 |   67 |
+------+------+------+
1 row in set 

obclient> SET @v1 = b'1000011';
obclient> SET @v2 = b'1000011'+0;
obclient> SET @v3 = CAST(b'1000011' AS UNSIGNED);
obclient> SELECT @v1, @v2, @v3;
+------+------+------+
| @v1  | @v2  | @v3  |
+------+------+------+
| C    |   67 |   67 |
+------+------+------+
1 row in set 

如果在结果集中选择了用户变量的值,则将其作为字符串返回给客户端。如果引用未初始化的变量,则它的值为 NULL 且类型为字符串。

除了 SET 语句,不建议在其他语句中为用户变量赋值并在同一语句中读取该值。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论