【发布时间】:2013-02-01 21:48:26
【问题描述】:
我面临以下问题:
-615:此表达式中不允许出现 Blob。
SELECT ser
,task_code
,trans_serial
,trans_year
,CASE when nvl(length(signed_content), 0) <> '' THEN signed_content ELSE attach_content END AS signed_content
,CASE WHEN nvl(length(signed_content), 0) <> '' THEN 'signed_content' ELSE 'attach_content' END AS comes_from
FROM attach_detail
WHERE serial = 5 AND task_code = 88 AND trans_year = 2012 AND trans_serial = 23728
注意:signed_content、attach_content 的类型为 BYTE;其他列的类型为INT。
【问题讨论】:
-
你能显示
attach_detail表的定义吗? -
如果您运行 select nvl(length(signed_content),0) from attach_detail 是否也遇到同样的错误?
-
您确定要将
nvl(NULL, 0)的结果与空字符串进行比较,而不是0? -
这似乎是一个相当愚蠢的限制。来自
finderr -615的-615 扩展错误消息根本不涵盖实际情况。我为此创建了一个“功能请求”错误(CQ idsdb00247982),但我无法预测它是否会被修复,更不用说何时修复了。 -
仅供参考:如果您使用 CLOB(或 BLOB)blob 而不是 TEXT(或 BYTE)blob,那么您可以在 UNION 等中使用它们。您可以对它们应用 NULLIF 或 NVL。但是,您不能在 CLOB 上使用 LENGTH。呻吟!