Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 十进制字段在IBM AS400的windows上显示为负数_Sql_Database_Db2_Ibm Midrange_Db2 400 - Fatal编程技术网

Sql 十进制字段在IBM AS400的windows上显示为负数

Sql 十进制字段在IBM AS400的windows上显示为负数,sql,database,db2,ibm-midrange,db2-400,Sql,Database,Db2,Ibm Midrange,Db2 400,我有一个场景,在这个场景中,我在as400(DB2)上的一个表中使用绿色屏幕上的SQL执行select,并且在windows PC上使用SQL工具执行相同的SQL语句 在as400(DB2)上: 请注意未重新定义的值40229和41158。db2端的字段类型是十进制9 现在,当我使用SQL工具(IBM(R)Data Studio)在windows PC上运行相同的SQL时: 由于某种原因,当数据返回为-40229和-41158时 这感觉像是某种溢出,但为什么 从Sql工具导航到数据库结构时,

我有一个场景,在这个场景中,我在as400(DB2)上的一个表中使用绿色屏幕上的SQL执行select,并且在windows PC上使用SQL工具执行相同的SQL语句

在as400(DB2)上:

请注意未重新定义的值40229和41158。db2端的字段类型是十进制9

现在,当我使用SQL工具(IBM(R)Data Studio)在windows PC上运行相同的SQL时:

由于某种原因,当数据返回为-40229和-41158时

这感觉像是某种溢出,但为什么

从Sql工具导航到数据库结构时,字段类型为:

因此,在as400上,字段类型为十进制9,从Windows端看,字段类型为十进制9

为什么这是负面的窗口?和类型有关吗

SQL窗口:
select*from maxdtaclb.szciexp,其中TCNUOR='129444'

SQL AS400:
select*from maxdtaclb/szciexp,其中TCNUOR='129444'

是否选择了值小于0的所有位置,并获得了11行的结果

再次,如果我在绿色屏幕上用相同的记录键进行选择,它是负数


我注意到,即使我使用rpgiv程序从表中获取数据,rpgiv程序中的数据也是负值。

您使用什么工具查看绿色屏幕的结果?我假设是STRSQL

考虑到三分之二的工具(DataStudio/RPG)将该值显示为负值,我认为该值为负值

尝试一件事,使用HEX()函数查看数据的十六进制值。负值应为“000040229D”,正值应为“000040229F”

然而,“000040229B”是一个有效但很少使用的负片替代品。您使用的绿色屏幕工具可能无法识别它

但是,至少在我的系统(v7.1 TR 9)上,STRSQL至少用负号正确地显示两个版本的负值。

您使用什么工具查看绿色屏幕的结果?我假设是STRSQL

考虑到三分之二的工具(DataStudio/RPG)将该值显示为负值,我认为该值为负值

尝试一件事,使用HEX()函数查看数据的十六进制值。负值应为“000040229D”,正值应为“000040229F”

然而,“000040229B”是一个有效但很少使用的负片替代品。您使用的绿色屏幕工具可能无法识别它

但是,至少在我的系统(v7.1 TR 9)上,STRSQL至少用负号正确地显示两个版本的负值。

如果文件是从DDS源成员(而不是SQL DDL
CREATE TABLE
语句)创建的,则该字段可能是使用
EDTCDE
关键字定义的。编辑代码可用于控制交互式会话中查询输出中数值的显示方式。使用编辑代码1、2、3或4将导致抑制负号。如果在表达式中使用该字段,SQL将生成不再由编辑代码格式化的派生列

DDS源成员中的文件定义示例::

            R RDMC001P                           
              NUMFLD1        5P 0       EDTCDE(3)
SQL会话示例:

> insert into dmclib/dmc001p           
  values (-12345)                      
  1 rows inserted in DMC001P in DMCLIB.
> select NUMFLD1 from dmclib/dmc001p         
  NUMFLD1
   12345
> select decimal(numfld1,5,0) as NUMFLD2 from dmclib/dmc001p       
  NUMFLD2 
   12,345-

请参阅7.2 IBM手册,该手册描述了EDTCDE DDS关键字的可用代码。(即使标题提到显示文件,它也适用于物理文件。)

如果文件是从DDS源成员(而不是SQL DDL
CREATE TABLE
语句)创建的,则该字段可能是使用
EDTCDE
关键字定义的。编辑代码可用于控制交互式会话中查询输出中数值的显示方式。使用编辑代码1、2、3或4将导致抑制负号。如果在表达式中使用该字段,SQL将生成不再由编辑代码格式化的派生列

DDS源成员中的文件定义示例::

            R RDMC001P                           
              NUMFLD1        5P 0       EDTCDE(3)
SQL会话示例:

> insert into dmclib/dmc001p           
  values (-12345)                      
  1 rows inserted in DMC001P in DMCLIB.
> select NUMFLD1 from dmclib/dmc001p         
  NUMFLD1
   12345
> select decimal(numfld1,5,0) as NUMFLD2 from dmclib/dmc001p       
  NUMFLD2 
   12,345-

请参阅7.2 IBM手册,该手册描述了EDTCDE DDS关键字的可用代码。(它适用于物理文件,即使标题中提到了显示文件。)

我相信您可以在该工具中设置许多内容的格式,包括日期(您可能应该更改为使用
*ISO
)。我想它也包括数字?我先检查一下。我们可以看看声明吗?只是这组字段吗?是不是只有这一行(我们确定是同一行,尽管看起来是这样的)?您确定您正在访问同一个表(会话中未设置
*LIBL
或其他内容)?它正是受影响的同一个表和同一行。唯一奇怪的是,如果我选择另一行,值是正确的(不是负的),就像我的示例中的一些值不正确一样。我将检查*ISO格式..正确的示例检查我的as400的第一个图像值:18919在windows端显示正确,但40229显示负数。。。这就是为什么我觉得有点像溢出?我和@Clockwork Muse在一起……你确定是同一排吗?尝试将
RRN()
添加到您的选择中,如下所示:
select RRN(a),a.*来自maxdtaclb.szciexp a,其中TCNUOR='129444'
如果溢出,则不太可能是相同的值,而不是负值。此外,压缩十进制不会像整数那样溢出。我相信您可以在该工具中为许多事情设置格式,包括日期(您可能应该更改为使用
*ISO
)。我想它也包括数字?我先检查一下。我们可以看看声明吗?只是这组字段吗?是不是只有这一行(我们确定是同一行,尽管看起来是这样的)?您确定您正在访问同一个表(会话中没有设置
*LIBL
或其他内容)?它完全是同一个表和同一行