数字类型字面量
Vertica 支持三种类型的数字:整数、数字和浮点数。
-
Integers 是小于 2^63 的完整数,且必须是数字。
-
Numerics 是大于 2^63 或包含具有精度和标度的小数点的完整数。Numerics 可含有指数。以 0x 开头的数字是十六进制数。
Numeric-类型值也可通过使用来自字符串的投影生成。这是一个更普遍的语法。请参阅下文的例子,以及 数据类型强制运算符 (CAST)。
语法
digits
digits.[digits] | [digits].digits
digits e[+-]digits | [digits].digits e[+-]digits | digits.[digits] e[+-]digits
参数
注意
- 如果
e
存在,则至少有一个数字跟阶码标记符在 (e
)之后。
- 常数中不得嵌入任何空格或其他字符。
-
前面的加号 (+) 或减号 (–) 标记不作为常数的一部分;它们是应用于常量的一元运算符。
-
在大多数情况下,numeric-类型的常数根据上下文,自动强制转换为最合适的类型。如有必要,您可以根据 数据类型强制运算符 (CAST)所述,通过投影将 numeric 值强制转换为指定的数据类型。
-
不支持浮点字面字面量如果您需要指定浮点数,可根据 数据类型强制运算符 (CAST)进行投影。
-
Vertica 遵循 IEEE 浮点规范,包括 NaN(非数字)和 Infinity (Inf)。
-
NaN 不大于同时也不小于任何值(甚至是本身)。换句话说,每当涉及到 NaN,比较始终返回 false。
-
除法 INTEGERS (x / y) 生成 NUMERIC 结果。您可以使用 // 运算符将结果截断为完整数。
示例
下面是数字类型字面字面量的例子:
42
3.5
4.
.001
5e2
1.925e-3
科学记数法:
=> SELECT NUMERIC '1e10';
?column?
-------------
10000000000
(1 row)
BINARY
缩放:
=> SELECT NUMERIC '1p10';
?column?
----------
1024
(1 row)
=> SELECT FLOAT 'Infinity';
?column?
----------
Infinity
(1 row)
下面的例子对使用 / 和 // 运算符除整数进行了说明:
=> SELECT 40/25;
?column?
----------------------
1.600000000000000000
(1 row)
=> SELECT 40//25;
?column?
----------
1
(1 row)