首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >十进制字段在IBM AS400窗口上显示为负数。

十进制字段在IBM AS400窗口上显示为负数。
EN

Stack Overflow用户
提问于 2015-10-22 10:32:55
回答 2查看 1.2K关注 0票数 1

我有一个场景,使用as400(DB2)上的表在绿屏幕上使用SQL进行选择,并使用SQL工具在windows上执行相同的SQL语句。

在as400(DB2)上:

请注意未关联的值40229和41158。db2侧的字段类型是十进制9。

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

由于某些原因,数据被返回为-40229和-41158。

这感觉像是某种形式的溢出,但为什么和什么?

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

因此,在as400上,字段类型是十进制9,而从Windows端则是小数点9。

为什么这在Windows上是阴性的?跟这种类型有关吗?

SQL:select * from maxdtaclb.szciexp where TCNUOR ='129444'

SQL AS400:select * from maxdtaclb/szciexp where TCNUOR ='129444'

是否选择了值小于0并得到11行结果的所有.

同样,如果我用相同记录的键在绿色屏幕上进行选择,那么它是负的?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-22 17:27:45

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

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

代码语言:javascript
复制
            R RDMC001P                           
              NUMFLD1        5P 0       EDTCDE(3)

示例SQL会话:

代码语言:javascript
复制
> 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.2ibm手册,描述EDTCDE关键字可用的代码。(它适用于物理文件,即使标题提到显示文件。)

票数 4
EN

Stack Overflow用户

发布于 2015-10-22 17:11:25

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

鉴于3种工具中有2种(Data / RPG)显示值为负值,我会说值为负值。

要尝试的一件事是,使用HEX()函数查看数据的十六进制值。你应该看到'000040229D‘的负值,或'000040229F’如果是正的。

然而,'000040229B‘是一个有效的,但很少使用的负面替代。有可能你使用的绿色屏幕工具没有识别它。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33278941

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档