SQL CASE 语句和减号

Posted

技术标签:

【中文标题】SQL CASE 语句和减号【英文标题】:SQL CASE statements and MINUS 【发布时间】:2010-11-08 17:21:21 【问题描述】:

CASE 语句是否会自动中断使用 MINUS 的查询?我正在将数据集的实时拉取与它的先前缓存进行比较,即使实时拉取中的 CASE 语句返回纯 VARCHAR2 结果,我也得到它们与缓存表中的静态值之间的类型不匹配,即也存储为 VARCHAR2。

我能想到的唯一其他可能性甚至更小 - 连接 ( || ) 或单引号中的文字,两者都出现在 CASE 结果中,是否会搞砸?

【问题讨论】:

您的查询样本(包括您的 CASE 语句)应该有助于我们为您提供帮助。 【参考方案1】:

在您的 SELECT 语句中,除了这个 CASE 之外,您还有其他字段吗? MINUS 尝试比较整个行,可能其他一些值不匹配。

您是否尝试过修剪外壳 (TRIM(CASE foo WHEN..) 以查看是否滑落了什么?

所有分支都返回 VARCHAR2 吗?有时,即使一个分支返回一个数字或日期,它也可能会弄乱类型。

【讨论】:

嗯,每个语句的分支之一是一个拼凑在一起的 URL,如下所示: '文字字符串' || CHAR_VALUE || '文字字符串' || NUM_VALUE || 'literal text string'(有没有办法在评论中插入换行符)但即使在 NUM_VALUE 或整个事物或两者上打一个 TO_CHAR 也不能解决问题。 好吧,有趣的是,我尝试再次将 TO_CHAR 放在 NUM_VALUE 和整个分支上,这次成功了。是的,我将不得不想出一种方法来提供有意义的例子来说明我在网上所做的事情,而无需发布任何可能与我正在从事的工作的雇主专有元素相关联的内容(即说,全部)。

以上是关于SQL CASE 语句和减号的主要内容,如果未能解决你的问题,请参考以下文章

SQL里if语句和case语句有啥区别吗?哪个使用更高效?就是查询更优化?

SQL语句中Case 的用法

SQL语句中case,when,then的用法

条件语句&CASE表达式语法

SQL语句case怎么判断这个字段为空

使用 LISTAGG 和 CASE 语句的 SQL 查询