0

JDBCを初めて使用し、クエリを実行しているときに、一貫性のない結果が得られます。

SQL Developer(Oracle DBに接続)でこのクエリを実行すると、4つの結果が得られます

SELECT *
FROM someTable1 some1 
JOIN someTable2 some2 on (some1.some_id= some2.other_id)
WHERE some2.some_date LIKE '01/01/01' OR some2.some_date IS NULL

次に、Javaのプロパティファイルからこれと同じクエリをロードし、クエリを実行して0の結果を取得します...これが発生している理由を誰かが知っていますか?私は最初にプロパティ値の一重引用符を疑っていますが、わかりません...

よろしくお願いします。私の貧弱な英語を失礼します!:)

4

1 に答える 1

2

クエリには、Java、プロパティローダー、またはJDBCを混乱させる可能性のある特殊文字が含まれていないため、SQLDeveloperとJDBCでまったく同じ結果が得られるはずです。

実際、SQL DeveloperはJavaで記述されているため、JDBCを使用してクエリを実行しています。

実行する前にクエリをコンソールに出力して、コードが意図したクエリを実行することを100%確認します。

次に、のタイプを確認する必要がありsome_dateます。日付/時刻タイプではなくLIKE、文字列タイプ(および同様のもの)に対してのみ定義されます。VARCHAR

Oracleには、日付/時刻タイプのクエリを作成するための一連のヘルパー関数があります。次に例を示します。

some_date = to_date( '01/01/2001','mm/dd/yyyy')

また

TRUNC(some_date, 'DAY') = to_date( '01/01/2001','mm/dd/yyyy')

2番目のクエリは、列から時間、分、秒などを取り除き、日、月、年のみを比較します。

注:あらゆる種類の奇妙な問題を回避するために、常に4桁の年を使用してください。

于 2013-01-07T15:27:37.700 に答える