用 SQL 查询结果中的空白单元格替换“(null)”

Replacing "(null)" with blank cell in SQL query result

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

我的 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*

非常感谢!

你试过标准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

以上例子来自Database SQL Language Reference

标准 SQL 按照@Shishir 的建议提供 COALESCE(expr1, expr2, ...)

COALESCE() 接受可变数量的参数,returns 第一个表达式是 NOT NULL

MySQL还提供IFNULL(expr1,expr2),其中returnsexpr2expr1IS NULL

例子

SELECT
    COALESCE(field1, ''),
    COALESCE(field1, field2, field3)
    IFNULL(field1, ''),
    IFNULL(field1, field2)
FROM table

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

 ELSE
     ''

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

例如,要使用 space 而不是 NULL:

ELSE 
   ' '

更新 问题是 DbVisualizer 工具。 OP 的版本为 8.0.12。在版本 9.2.8 之前,它无法将 NULL 显示为空字符串。但是,正如本文所讨论的 forum, it has been fixed in DbVisualizer 9.2.8.