ORA-01790: 表达式必须具有与对应表达式相同的数据类型

Posted

技术标签:

【中文标题】ORA-01790: 表达式必须具有与对应表达式相同的数据类型【英文标题】:ORA-01790: expression must have same datatype as corresponding expression 【发布时间】: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 但不起作用。

【问题讨论】:

【参考方案1】:

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

【讨论】:

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

以上是关于ORA-01790: 表达式必须具有与对应表达式相同的数据类型的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01790: 表达式必须具有与对应表达式相同的数据类型

错误:ORA-01790:表达式必须具有与相应表达式相同的数据类型

如何使用正则表达式构造相对应的ε-NFA

Lambda表达式

Power BI DAX函数のSUMX函数

Lamda 表达式里的Join和GroupJoin的区别, 如何实现SQL的Left Join效果