数值分为十进制和十六进制两种。
十进制数值
十进制数值可以分为精确数值(整数和定点数值)和浮点数值。数值可以使用小数点 . 作为十进制分隔符,也可以在前面加一个负号 - 来表示负值。
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




