1

ODBCを介してアクセスしているリモートDB2データベースがあります。次のようなクエリがある場合

SELECT t.foo, t.bar, t.problemcolumn
FROM problemtable t
WHERE t.bar < 60;

それは魅力のように機能するので、テーブルと列は明らかに存在します。

しかし、WHERE句で問題の列を指定すると

SELECT t.foo, t.bar, t.problemcolumn
FROM problemtable t
WHERE t.problemcolumn = 'x'
AND t.bar < 60;

エラーが発生します

Table "problemtable" does not exist.

これの理由は何でしょうか?スペルを再確認しました。where句にproblemcolumnを含めるだけで、問題をトリガーできます。

4

6 に答える 6

3

明白な答えで申し訳ありませんが、問題のあるものは存在しますか?テーブル/列名のため、コードは擬似コードのように見えますが、スペルを再確認してください。異なるデータベース/サーバー間で結合されたテーブルで構成されている可能性があるビューではありませんか?

于 2008-09-17T11:11:07.090 に答える
2

使用している実際の SQL は何ですか? あなたが挙げた例に問題はありません。エラーの原因となっている可能性のある誤った場所のコンマや引用符を探してみてください。

于 2008-09-17T11:31:23.487 に答える
0

それはちょうどで動作しますか:

SELECT t.foo, t.bar, t.problemcolumn
FROM problemtable t
WHERE t.problemcolumn = 'x'
于 2008-09-17T11:49:39.900 に答える
0

DB2は、誤解を招くエラーを出すことがあります。次のトラブルシューティング手順を試すことができます。

  1. DBArtisanまたはDB2ControlCenterを介してコードを実行してみて、適切な結果/エラーメッセージが表示されるかどうかを確認してください。
  2. 問題があるだけでなく、schema_name.problemtableを使用してみてください
  3. problemcolumnが、比較しているのと同じデータ型であることを確認してください。
于 2009-07-10T04:22:20.193 に答える
0

次の SQL ステートメントを実行してください。私にとってはうまくいきます。それでもこの奇妙なエラーが発生する場合は、DB2 のバグです。UNIX エディターから Windows へ、またはその逆にコードをコピーする際に問題が発生したことがあります。問題ないように見えましたが、SQL は実行されませんでした。ステートメントを再入力すると、問題が解決しました。

問題テーブルを作成します ( foo varchar(10), bar int, problemcolumn varchar(10) );

SELECT t.foo、t.bar、t.problemcolumn FROM problemtable t WHERE t.bar < 60;

SELECT t.foo、t.bar、t.problemcolumn FROM problemtable t WHERE t.problemcolumn = 'x' AND t.bar < 60;

于 2008-09-18T15:16:06.153 に答える
0

It think it should be work in DB2. What is your font-ent software?

于 2008-10-02T16:32:50.667 に答える