数字类型字面量

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)

另请参阅

数据类型强制转换