zoukankan      html  css  js  c++  java
  • Oracle11g中ORA-01790

         问题源于群里有人问如何让查询的结果值+1,方法其实很简单,直接在SQL语句中+1就可以,如果有空可以用NVL处理。

    但是测试的时候我使用了UNION ALL(测试的字段是varchar2类型),结果报错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后的字段类型呢?在文档中没有找到。(待解决)

  • 相关阅读:
    ios 关闭自动修正输入内容
    Tarjan+缩点【强连通分量】【模板】
    初识Tarjan算法
    【尺取法】【转】
    【先加后减拼凑思想】【合成数问题】
    强连通分量【k 算法、t 算法】
    大数【加减乘除】
    洛谷博客地址【置顶!】
    差分约束+spfa【模板】
    【poj3169】【差分约束+spfa】
  • 原文地址:https://www.cnblogs.com/GYoungBean/p/3410814.html
Copyright © 2011-2022 走看看