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

时间:2012-06-21 07:17:13

标签: sql db2

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

Database:-     EP1,
Schema:-       W2HCMSC,
Tablespace:-   W2HCMTS,
Table:-        TESTEMPLOYEE,
Cloumns:-      ZONE, Workshop, Year, Employee Name, Designation, DOB.

带有值的数据库的快照是我要运行的select语句是带有where子句但不返回任何行的select查询。 这些是细节:

select * from w2hcmsc.testemployee

(返回4行)

select * from w2hcmsc.testemployee where 'w2hcmsc.Zone' = '1'

(0行返回)

select * from w2hcmsc.testemployee where 'Zone' = 1

(SQL0420N在字符串参数中找到无效字符 功能“DECFLOAT”。 SQLSTATE = 22018)

select * from w2hcmsc.testemployee where zone = 1

SQL0206N“ZONE”在使用它的上下文中无效。 SQLSTATE = 42703

select * from w2hcmsc.testemployee where Zone = 1

SQL0206N“ZONE”在使用它的上下文中无效。 SQLSTATE = 42703

select * from w2hcmsc.testemployee where 'Zone' = '1'

(已选择0条记录)。

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

2 个答案:

答案 0 :(得分:0)

尝试列的完全限定名称:

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

或为表创建别名并使用它:

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

答案 1 :(得分:0)

您的列名称似乎是大小写混合。避免在列名中使用混合大小写通常是一个好主意 - 虽然DB2支持这一点,但它会产生这样的麻烦。

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

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

或使用表关联名称:

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