暂无图片
暂无图片
3
暂无图片
暂无图片
暂无图片

OceanBase SQL语句整数类型

2024-04-02
527

整数类型为定长、精确的数值类型,值域取决于类型长度,以及是否为无符号,Precision 只表示最小显示宽度。

OceanBase 数据库所支持的每种整数类型所需的存储长度和值域如下表所示。

类型长度(字节)值域(有符号)值域(无符号)
BOOL/BOOLEAN/TINYINT1[-27, 27 - 1][0, 28 - 1]
SMALLINT2[-215, 215 - 1][0, 216 - 1]
MEDIUMINT3[-223, 223 - 1][0, 224 - 1]
INT/INTEGER4[-231, 231 - 1][0, 232 - 1]
BIGINT8[-263, 263 - 1][0, 264 - 1]

TINYINT

TINYINT 用于表示一个非常小的整数。语法如下:

TINYINT[(M)] [UNSIGNED] [ZEROFILL]

M 表示最大显示宽度。最大显示宽度为 255。显示宽度与可以存储的值范围无关。如果为数值列指定 ZEROFILL,OceanBase 数据库会自动向该列添加 UNSIGNED 属性。

BOOL/BOOLEAN

BOOL/BOOLEAN 类型是 TINYINT 的同义词。零值表示错误,非零值表示正确。

示例如下:

obclient> SELECT IF(0, 'true', 'false');
+------------------------+
| IF(0, 'true', 'false') |
+------------------------+
| false                  |
+------------------------+
1 row in set

obclient> SELECT IF(1, 'true', 'false');
+------------------------+
| IF(1, 'true', 'false') |
+------------------------+
| true                   |
+------------------------+
1 row in set

obclient> SELECT IF(2, 'true', 'false');
+------------------------+
| IF(2, 'true', 'false') |
+------------------------+
| true                   |
+------------------------+
1 row in set

obclient> SELECT IF(2 = FALSE, 'true', 'false');
+--------------------------------+
| IF(2 = FALSE, 'true', 'false') |
+--------------------------------+
| false                          |
+--------------------------------+
1 row in set

SMALLINT

SMALLINT 用于表示一个小值整数。语法如下:

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

M 表示最大显示宽度。最大显示宽度为 255。显示宽度与可以存储的值范围无关。如果为数值列指定 ZEROFILL,OceanBase 数据库会自动向该列添加 UNSIGNED 属性。

MEDIUMINT

MEDIUMINT 用于表示一个中等大小的整数。

语法如下:

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

M 表示最大显示宽度。最大显示宽度为 255。显示宽度与可以存储的值范围无关。如果为数值列指定 ZEROFILL,OceanBase 数据库会自动向该列添加 UNSIGNED 属性。

INT/INTEGER

INT 或 INTEGER 用于表示一个正常大小的整数。语法如下:

INT[(M)] [UNSIGNED] [ZEROFILL]
INTEGER[(M)] [UNSIGNED] [ZEROFILL]

M 表示最大显示宽度。最大显示宽度为 255。显示宽度与可以存储的值范围无关。如果为数值列指定 ZEROFILL,OceanBase 数据库会自动向该列添加 UNSIGNED 属性。

另外,OceanBase 数据库还支持扩展类型 INT2 和 INT4,但是推荐使用 INT 替换 INT4

BIGINT

BIGINT 用于表示一个大整数。语法如下:

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

M 表示最大显示宽度。最大显示宽度为 255。显示宽度与可以存储的值范围无关。如果为数值列指定 ZEROFILL,OceanBase 数据库会自动向该列添加 UNSIGNED 属性。

关于 BIGINT,需要注意以下事项:

  • 所有运算需要使用有符号的 BIGINT 或 DOUBLE 值,因此不应使用大于 9223372036854775807(63 位)的无符号大整数,BIT 函数除外。否则,在将 BIGINT 值转换为 DOUBLE 时会出现舍入错误,导致结果中的最后一位数字可能出错。

  • 通过使用字符串存储 BIGINT,这样始终可以将精确的整数值存储在 BIGINT 列中。在这种情况下,在执行字符串到数字的转换时,不涉及双精度的中间转换。

  • 当两个操作数都是整数值时,-、+ 和 * 运算符使用 BIGINT 运算。如果将两个大整数(或函数返回的整数结果)相乘,当结果大于 9223372036854775807 时可能会得到异常的结果。

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

评论