7

「ユニオン」で結合された2つの選択ステートメントがあります。そのステートメントを実行している間、私は持っています:

エラー レポート: SQL エラー: ORA-01790: 式は、対応する式 01790 と同じデータ型である必要があります。00000 - "式は、対応する式と同じデータ型である必要があります"

この問題を診断する方法についてアドバイスをいただけないでしょうか。

4

8 に答える 8

17

SQL を見なくても、データ型が異なる列が UNION されていると推測できます。

于 2009-12-07T21:44:04.290 に答える
11

見つかったものは次のとおりです。

ORA-01790: 式は、対応する式と同じデータ型である必要があります

原因: SELECT リスト項目は、同じセット式の別のクエリ内の異なるデータ型の SELECT リスト項目に対応しています。

処置:対応するすべてのSELECTリスト項目のデータ型が同じであることを確認してください。TO_NUMBER、TO_CHAR、および TO_DATE 関数を使用して、明示的なデータ変換を行います。

私はあなたのクエリを見たことがありませんが、ユニオン内の 1 つの選択が他の列と同じ列を選択していないと推測しています。

于 2009-12-07T21:44:44.570 に答える
3

質問で述べたように、問題のトラブルシューティング方法について提案したいと思います。私が行ったことは、各 select ステートメントで一度に 1 つの列を有効にして、SQL UNION の最後の列で不一致があることを発見しました。参加して助けてくれてありがとう。でも、タイプの不一致があることはわかっていました。トラブルシューティングの方法はわかりませんでした。

于 2009-12-09T20:22:28.340 に答える
3

エラーは、異なるデータ型の列を結合していることを示しています。ある型を別の型に変換するオラクル関数 ("to_char" など) があります。データ型を共通の形式に変換するか、少なくとも 1 つを別の形式に変換する必要があります。実際のクエリ/タイプを投稿すると、より具体的になる可能性があります。

于 2009-12-07T21:46:23.587 に答える
2

ユニオン内の対応する列のデータ型が同じであることを確認する必要があります。最も簡単な方法は、列を 1 つずつコメントアウトして列を絞り込み、そのうちの 1 つで明示的な型変換関数を使用して型を一致させることです。

于 2009-12-07T21:46:12.013 に答える