0

今回は別の問題があり、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 句を使用した選択クエリが機能しない理由を教えてください。そして、私はそれを別の方法で書く必要がありますか?

4

2 に答える 2

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 に答える
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 に答える