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

OceanBase SQL语句数值

2024-04-24
306

数值分为十进制和十六进制两种。

十进制数值

十进制数值可以分为精确数值(整数和定点数值)和浮点数值。数值可以使用小数点 . 作为十进制分隔符,也可以在前面加一个负号 - 来表示负值。

DECIMAL 数据类型是定点类型,进行精确计算。FLOAT 和 DOUBLE 数据类型是浮点类型,进行近似计算。

精确值数值具有整数部分或小数部分,或两者兼有。例如:1、.2、3.4、-5、-6.78、+9.10。

近似值数值以科学计数法表示,带有尾数和指数。例如:1.2E3、1.2E-3、-1.2E3、-1.2E-3。

两个看起来相似的数值可能会被区别对待。例如,2.34 是精确(定点)数值,而 2.34E0 是近似值(浮点)数值。

十六进制数值

十六进制数值只支持整数数值,以前缀 X 和 0x 开始,允许出现字母 A 到 F,所有字母不区分大小写。

以如下为合法的十六进制数值:

X'01AF'
X'01af'
x'01AF'
x'01af'
0x01AF
0x01af

以下为不合法的十六进制数值:

X'0H'(H 不是十六进制数字)

使用前缀 X 的值必须包含偶数位数,否则会出现语法错误。为避免该问题,请使用 0 填充该值,例如:X'0FFF'

如果使用前缀 0x 的值包含奇数位数,则会被视为具有额外的前导 0。例如,0xaaF 被解读为 0x0aaF

默认情况下,十六进制数值是二进制字符串,其中每对十六进制数字代表一个字符:

obclient> SELECT 0x5461626c65, CHARSET(0x5461626c65);
+--------------+-----------------------+
| 0x5461626c65 | CHARSET(0x5461626c65) |
+--------------+-----------------------+
| Table        | binary                |
+--------------+-----------------------+
1 row in set 

空的十六进制值 (X' ') 计算为零长度的二进制字符串。转换为数字并输出 0

obclient> SELECT X''+0;
+-------+
| X''+0 |
+-------+
|     0 |
+-------+
1 row in set 

要将字符串或数字转换为十六进制格式的字符串,请使用 HEX() 函数:

obclient> SELECT HEX('dog');
+------------+
| HEX('dog') |
+------------+
| 646F67     |
+------------+
1 row in set 

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

评论