0

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

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

带有值的数据库快照是我要运行的选择语句,它是带有 where 子句的选择查询,但它不返回任何行。这些是详细信息:

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 子句的选择查询不起作用。我必须以任何不同的方式编写它吗?

4

2 回答 2

0

尝试列的完全限定名称:

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

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

select * from w2hcmsc.testemployee AS t1 where t1.ZONE = 1
于 2012-06-21T08:24:42.607 回答
0

您的列名似乎是混合大小写。避免在列名中使用混合大小写通常是一个好主意——虽然 DB2 支持这一点,但它会产生诸如此类的令人头疼的问题。

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

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

或者,使用表相关名称:

select * from w2hcmsc.testemployee as t1 where t1."Zone" = 1
于 2012-06-21T16:58:14.383 回答