具有 CLOB 数据类型的 NVL 函数

Posted

技术标签:

【中文标题】具有 CLOB 数据类型的 NVL 函数【英文标题】:NVL function with CLOB datatype 【发布时间】:2021-01-19 11:29:04 【问题描述】:

我有这个问题:

select LENGTH(NVL(exam.vl_result,' ')) from exam;

我收到了这个错误:ORA-00932: inconsistent datatypes: expected - got CLOB

vl_result 列是 CLOB,但在这种情况下我需要使用 NVL。有没有办法将 NVL 与数据类型 CLOB 一起使用?如果不是,那么获得类似查询的最佳方式是什么。

【问题讨论】:

我正在使用 oracle 11g 并且能够将 NVL 与 clob 列一起使用。事实上,我和你一样的查询,它对我有用。您使用的是哪个 oracle 版本? 不幸的是我使用的是 Oracle 10g :( 然后尝试以下给出的解决方案,如果它们适合您 【参考方案1】:

如下使用case..when

select case when exam.vl_result is null then 1 
            else LENGTH(exam.vl_result) 
       end 
  from exam;

注意:要查找 clob 的长度,请使用 dbms_lob.getlength

【讨论】:

【参考方案2】:

嗯。 . .先运行length() 怎么样:

coalesce(length(exam.vl_result), 1)

【讨论】:

它可以工作,但是还有另一个功能,例如我只有 NVL(clob, ' ') 。不过谢谢!

以上是关于具有 CLOB 数据类型的 NVL 函数的主要内容,如果未能解决你的问题,请参考以下文章

spark - nvl 函数数据类型不匹配错误

转换函数不适用于 CLOB 数据类型

数据库CLOB型字段是啥数据类型?

查询包含 CLOB 数据类型的两个表

ORA-00932: 不一致的数据类型: 预期 - 得到 CLOB - 在 regexp_substr 函数中使用 clob

如何从 SQL 查询处理 Excel 中的 Clob 数据类型