用 SQL 查询结果中的空白单元格替换“(null)”
Replacing "(null)" with blank cell in SQL query result
我相信我在这里问的是可能的,但我还没有找到办法:
我的 SQL SELECT-FROM-WHERE 查询结果中的一些单元格是空白的,在 DbVisualizer 中,(null)
是写在里面。我想显示一个空白单元格。
我已经尝试使用 CASE-WHEN 和 NVL 运算符,但它不会让我用空白替换它 ''
,我被迫使用一些 ' '
或 '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
标准 SQL 按照@Shishir 的建议提供 COALESCE(expr1, expr2, ...)。
COALESCE()
接受可变数量的参数,returns 第一个表达式是 NOT NULL
MySQL还提供IFNULL(expr1,expr2),其中returnsexpr2
当expr1
IS 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.
我相信我在这里问的是可能的,但我还没有找到办法:
我的 SQL SELECT-FROM-WHERE 查询结果中的一些单元格是空白的,在 DbVisualizer 中,(null)
是写在里面。我想显示一个空白单元格。
我已经尝试使用 CASE-WHEN 和 NVL 运算符,但它不会让我用空白替换它 ''
,我被迫使用一些 ' '
或 '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
标准 SQL 按照@Shishir 的建议提供 COALESCE(expr1, expr2, ...)。
COALESCE()
接受可变数量的参数,returns 第一个表达式是 NOT NULL
MySQL还提供IFNULL(expr1,expr2),其中returnsexpr2
当expr1
IS 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.