2016-07-07 99 views
0

不行的在Netezza公司,当我查询为什么BIGINT/INT在Netezza公司

SELECT 2147483648:: BIGINT 

我得到的结果2147483647 - 这比我放在数少一个

当我查询

SELECT 2147483648:: INTEGER 

我得到 “错误:pg_atoi:错误阅读 ”2147483648“:数值结果超出范围”

为什么日在?

+0

我手上没有Netezza,但两个版本都在Postgres中工作。 –

回答

0

的CAST用于该值的BIGINT应该工作得很好:

TESTDB.ADMIN(ADMIN)=> SELECT 2147483648::BIGINT; 
    ?COLUMN? 
------------ 
2147483648 
(1 row) 

,因为该值是2147483648允许整数数据类型(2,147,483,648到2,147,483,647)的边界之外的强制转换为整数失败,which is documented here

TESTDB.ADMIN(ADMIN)=> SELECT 2147483648::INTEGER; 
ERROR: pg_atoi: error reading "2147483648": Numerical result out of range 
+0

我应该更多关注INTEGER的数据类型文档。但是,BIGINT仍然没有工作.... – LearningSQL

+0

提供选择VERSION()和show是实际的输出和你的CAST BIGINT – ScottMcG

+0

我不确定你的意思是“select VERSION()”,所以我是假设我想输入“SELECT VERSION(2147483648)”?如果是这样,我得到一个错误: “错误:函数‘版本(INT8)’不存在 无法确定满足 您可能需要增加明确的类型转换给定的参数类型的函数” 通过谢谢帮助你的方式! – LearningSQL