这次我遇到了另一个问题,它是关于在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查询不起作用。我是否必须以不同的方式编写它?
答案 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