2012-06-21 143 views
0

我有一個問題這個時間和它有關DB2的查詢,在數據庫的NWDS.The規範運行的,我使用的任何結果都是:DB2 select查詢不返回

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 records(s selected selected))。

請告訴我爲什麼使用where子句的select查詢不起作用。我必須以任何不同的方式寫下它嗎?

回答

0

嘗試列的全名:

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

或爲表創建一個別名,並使用它:

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

如果給t1.Zone和T1。 ZONE然後我得到SQL錯誤-206。如果使用't1.Zone',則sql錯誤-420正在提供 – user1471037

+0

PLZ需要更多幫助:( – user1471037

+0

我已經解決了這個問題,至少這是我的想法。問題是,在DB2中,coloumn名稱並非全部大寫,而是而解釋列的名稱正在從小寫轉換爲大寫,所以這就是爲什麼有列錯配。感謝所有幫助任何方式:) – user1471037

0

你的列名似乎是在混合大小寫。避免在列名中使用混合大小寫一般是個好主意 - 雖然DB2支持這種情況,但它會產生這樣的麻煩。

解決的辦法是使用引用雙引號(不是單引號)列名:

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

,或者使用一個表相關名:

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