Sql NWDS 7.0中的DB2 select查询不返回任何结果

Sql NWDS 7.0中的DB2 select查询不返回任何结果,sql,db2,Sql,Db2,这次我遇到了另一个问题,它是关于运行在NWDS中的DB2查询的。我使用的数据库规范是: Database:- EP1, Schema:- W2HCMSC, Tablespace:- W2HCMTS, Table:- TESTEMPLOYEE, Cloumns:- ZONE, Workshop, Year, Employee Name, Designation, DOB. 带有值的数据库快照是select语句,我想运行它,它是一个带有where子句

这次我遇到了另一个问题,它是关于运行在NWDS中的DB2查询的。我使用的数据库规范是:

Database:-     EP1,
Schema:-       W2HCMSC,
Tablespace:-   W2HCMTS,
Table:-        TESTEMPLOYEE,
Cloumns:-      ZONE, Workshop, Year, Employee Name, Designation, DOB.
带有值的数据库快照是select语句,我想运行它,它是一个带有where子句的select查询,但它不返回任何行。 详情如下:

从w2hcmsc.testemployee中选择* 4行返回

从w2hcmsc.testemployee中选择*,其中“w2hcmsc.Zone”=“1” 0行返回

从w2hcmsc.testemployee中选择*,其中“区域”=1 SQL0420N在的字符串参数中找到无效字符 函数DECFLOAT。SQLSTATE=22018

从w2hcmsc.testemployee中选择*区域=1 SQL0206N区域在其使用的上下文中无效。SQLSTATE=42703

从w2hcmsc.testemployee中选择*区域=1 SQL0206N区域在其使用的上下文中无效。SQLSTATE=42703

从w2hcmsc.testemployee中选择*,其中“区域”=“1” 已选择0条记录


请告诉我为什么带有where子句的select查询不起作用。我是否必须以任何不同的方式编写它?

尝试列的完全限定名:

select * from w2hcmsc.testemployee where w2hcmsc.testemployee.ZONE = 1
或者为表创建别名并使用它:

select * from w2hcmsc.testemployee AS t1 where t1.ZONE = 1

您的列名似乎大小写不一。一般来说,避免在列名中使用大小写混合是一个好主意——虽然DB2支持这一点,但它会造成类似这样的麻烦

解决方案是使用双引号而不是单引号引用列名:

select * from w2hcmsc.testemployee where "Zone" = 1
或者,使用表关联名称:

select * from w2hcmsc.testemployee as t1 where t1."Zone" = 1

如果给定t1.Zone和t1.Zone,则得到sql错误-206。如果使用't1.Zone',sql错误-420即将出现,我至少已经解决了这个问题,这就是我的想法。问题是,在DB2中,冒号名称并非都是大写的,但在解释列名称时,却从小写转换为大写,因此出现了列不匹配的情况。感谢您以任何方式提供的帮助: