Oracle 11 gのORA-01790
1849 ワード
質問はグループの中でどのようにクエリーの結果の値を+1させるかを聞くことから来て、方法は実はとても簡単で、直接SQL文の中で+1すればいいので、暇があればNVLで処理することができます.
しかしテストの際にユニオンALL(テストのフィールドはvarchar 2タイプ)を使用した結果、ORA-01790とエラーが発生しました.テストコードは次のとおりです.
その後、タイプ変換をしているような気がして、ドキュメントを調べました.
コードを次のように変更します.
問題が解決する.しかし、Oracleはどのように変換されますか?また、Oracleでselect後のフィールドタイプをどのように出力しますか?ドキュメントに見つかりませんでした.(解決すべき)
しかしテストの際にユニオンALL(テストのフィールドはvarchar 2タイプ)を使用した結果、ORA-01790とエラーが発生しました.テストコードは次のとおりです.
SELECT t.rearrangement13n+1 AS rearrangement13n FROM t_plan t WHERE t.id = 97
UNION ALL
SELECT t.rearrangement13n FROM t_plan t WHERE t.id=97
その後、タイプ変換をしているような気がして、ドキュメントを調べました.
OERR: ORA 1790 expression must have same datatype as corresponding expression
Error: ORA 1790
Text: expression must have same datatype as corresponding expression
-------------------------------------------------------------------------------
Cause: A SELECT list item corresponds to a SELECT list item with a different
datatype in another query of the same set expression.
Action: Check that all corresponding SELECT list items have the same datatypes.
Use the TO_NUMBER, TO_CHAR, and TO_DATE functions to do explicit data
conversions.
コードを次のように変更します.
SELECT to_char(t.rearrangement13n+1) FROM t_plan t WHERE t.id = 97
UNION ALL
SELECT t.rearrangement13n FROM t_plan t WHERE t.id=97
問題が解決する.しかし、Oracleはどのように変換されますか?また、Oracleでselect後のフィールドタイプをどのように出力しますか?ドキュメントに見つかりませんでした.(解決すべき)