3

我相信我在这里问的是可能的,但我还没有找到办法:

我的 SQL SELECT-FROM-WHERE查询结果中的某些单元格是空白的,并且在 DbVisualizer 中(null)是写在里面的。我想改为显示一个空白单元格。
我已经尝试过使用CASE-WHENNVL运算符,但它不会让我用空白替换它'',我不得不使用一些' ''message'

我知道我可以稍后使用 Excel 删除这些空格或消息,但我想知道是否有一种方法可以直接使用 DbVisualizer,而不是这种解决方法。


编辑:这是我的请求的样子:

SELECT *things*,
  CASE WHEN
     (SELECT COUNT(*) FROM table d2 WHERE *join-condition* AND *other condition*) = 1
  THEN
     (*sub-select query*)
  ELSE
     ''
  END
  AS NAME,
  *other things*
  FROM table d1
  WHERE *something*

非常感谢 !

4

3 回答 3

4

您是否尝试过标准SQL 函数coalesce(),如下所示?

SELECT COALESCE(columnName, '') AS ColumnName FROM tableName;

句法:

合并语法

COALESCE (expr1, expr2)

相当于:

CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END

相似地,

COALESCE (expr1, expr2, ..., exprn), for n>=3

相当于:

CASE WHEN expr1 IS NOT NULL THEN expr1 
   ELSE COALESCE (expr2, ..., exprn) END

以上示例来自数据库 SQL 语言参考

于 2015-07-14T10:28:24.383 回答
2

您查询中的问题是CASE表达式的以下ELSE部分:

 ELSE
     ''

Oracle中,空字符串被视为NULL值。因此,您需要做的就是使用其他东西而不是''.

例如,要使用空格而不是NULL

ELSE 
   ' '

更新问题是DbVisualizer工具。OP 在版本上8.0.12。在版本之前,9.2.8它不能将NULL显示为空字符串。但是,正如本论坛中所讨论的,它已在DbVisualizer 9.2.8中得到修复。

于 2015-07-14T11:07:37.450 回答
1

正如@Shishir 所建议的那样,标准 SQL 提供COALESCE(expr1, expr2, ...) 。

COALESCE()接受可变数量的参数并返回第一个表达式NOT NULL

MySQL 还提供IFNULL(expr1,expr2)expr2expr1 IS NULL

例子

SELECT
    COALESCE(field1, ''),
    COALESCE(field1, field2, field3)
    IFNULL(field1, ''),
    IFNULL(field1, field2)
FROM table
于 2015-07-14T10:37:56.623 回答