打印

PostgreSQL学习文档

Example 10-3. 绝对值和取反操作符类型分析

PostgreSQL 操作符表里面有几条记录用于前缀操作符 @,所有这些都是为各种数值类型实现绝对值操作的。其中有一条用于类型 float8,它是数值表中的优选类型。因此,在面对非数值输入的时候,PostgreSQL 会使用该类型∶

select @ text '-4.5' as "abs";
abs
-----
4.5
(1 row)在这里系统在应用选定的操作符之前执行类一次text到float8的转换。我们可以验证它是float8而不是其它什么类型:

select @ text '-4.5e500' as "abs";

ERROR:  Input '-4.5e500' is out of range for float8
另一方面,前缀操作符 ~ (按位取反) 只为整数数据类型定义,而不是为float8定义的。因此,如果我们用 ~ 做类似实验,就有:

SELECT ~ '20' AS "negation";

ERROR:  operator is not unique: ~ "unknown"
HINT:  Could not choose a best candidate operator. You may need to add explicit
type casts.这是因为系统无法决定好几个可能的 ~ 操作符中应该用哪个。我们可以用明确地类型转换来帮它:

SELECT ~ CAST('20' AS int8) AS "negation";

negation
----------
      -21
(1 row)

TOP

在物理层实现连接功能可采用

TOP


感谢一直以来您对我们的支持!
当前时区 GMT+8, 现在时间是 2008-9-8 21:08 京ICP证060528 号

Designed By 17DST