【问题标题】:ORA-01790: expression must have same datatype as corresponding expressionORA-01790: 表达式必须具有与对应表达式相同的数据类型
【发布时间】:2017-04-20 05:19:22
【问题描述】:
select '' as sys_policy_value_id, '' as value from table(sys.dbms_debug_vc2coll $POLICY_DEF_NAMES$) ap 
UNION 
select TO_CHAR(p.sys_policy_value_id), p.value from policy_value p

这里p.value 是CLOB。所以我得到了这个例外。

如果我使用to_char('p.value'),那么我会得到numberFormat 异常。如果我将 '' 作为值更改为 null 作为值,我将得到 ora-00932 inconsistent datatypes expected - got clob

也尝试过使用 Union All 但不起作用。

【问题讨论】:

    标签: sql oracle oracle11g


    【解决方案1】:

    使用 DBMS_LOB.substr(p.value, 4000)。它正在工作。

    【讨论】:

    • “它正在工作”不正确。如果 p.value 有超过 4000 个字符,那么你正在截断它 - 这就是你需要的吗?这不是正确的解决方案;正确的解决方案是在union的第一部分选择to_clob(''),然后按原样选择p.value
    • @mathguy 它正在使用 UNION ALL 而不是 UNION。我也有一个外部选择来组合 UNION 的结果,并且 UNION ALL 也不起作用。你有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多