Sql 如果oracle db中的行为空,则返回文本的查询

Sql 如果oracle db中的行为空,则返回文本的查询,sql,oracle,oracle9i,Sql,Oracle,Oracle9i,现在我有一个查询,它给了我一个空白,这很好,但我真正需要的是如果它为空,则返回“空”的内容。我已经使用了几个选项,现在这是我拥有的最好的查询,但是我不知道如何让它在null时显示“EMPTY” SELECT paramOne, paramTwo FROM tableName WHERE search_param = 'x' UNION ALL SELECT NULL, NULL FROM dual WHERE NOT EXISTS ( SELECT paramOne, paramTwo F

现在我有一个查询,它给了我一个空白,这很好,但我真正需要的是如果它为空,则返回“空”的内容。我已经使用了几个选项,现在这是我拥有的最好的查询,但是我不知道如何让它在null时显示“EMPTY”

SELECT paramOne, paramTwo
FROM tableName
WHERE search_param = 'x' 

UNION ALL

SELECT NULL, NULL
FROM dual
WHERE NOT EXISTS (
SELECT paramOne, paramTwo
FROM tableName
WHERE search_param = 'x'
);
paramOne是数字 第二个是瓦查尔

我想要的结果基本上是:

如果该行有数据,则应返回123,Name


如果行没有数据,它应该是000,“空”

这听起来有点像你应该考虑做客户端而不是在查询中做的事情…但是您可以直接将
硬编码为“空”
而不是
NULL

SELECT paramOne, paramTwo
FROM tableName
WHERE search_param = 'x' 

UNION ALL

SELECT 'EMPTY', 'EMPTY'
FROM dual
WHERE NOT EXISTS (
SELECT paramOne, paramTwo
FROM tableName
WHERE search_param = 'x'
);

如果要将空值转换为非空值,请使用
NVL
功能

SELECT NVL( paramOne, 'Empty' ),
       NVL( paramTwo, 'Empty' )
  FROM table_name
 WHERE search_param = 'x';
如果您正在尝试执行其他操作,如果您可以发布一些示例数据和预期输出,这将非常有帮助。

我怀疑paramtoo(varchar2 one)不是真的空,请尝试:

SELECT nvl(paramOne, 0), nvl(trim(paramTwo), 'EMPTY')
FROM tableName
WHERE search_param = 'x'

你在说什么空白?您能否提供当前表的示例数据和预期结果?如果第一个查询不包含任何结果,他希望返回
“Empty”
。。。这将不起作用,因为不会返回执行
NVL
所需的
NULL
值。我肯定已经对NVL进行了一些处理,我注意到我仍然返回一个空白行,而不是“空”。我应该注意,paramOne是一个数字,paramTwo是varchar。@mtnwk-您是否试图将返回0行数据的查询转换为返回1行硬编码值数据的查询?或者您正在尝试将返回1行具有
NULL
值的数据的查询转换为返回1行具有硬编码值的数据的查询?我读了你最初的帖子,想问一下前者。你的编辑听起来像是想问后者;如果为空,则返回指定的内容;如果不为null,则返回数据。@mtnwk-这就是
NVL
的作用。如果
NVL
对您不起作用,如果您可以发布一些示例数据和预期输出,这将非常有用。否则,我们似乎很难理解您的要求。我考虑过这个问题并尝试过,但如果结果为空,它将返回一个空行。@mtnwk By blank row,您是说根本没有行,还是指包含空格的行?我使用了与您用于此目的相同的方法,但不是专门在Oracle中使用的方法。我看不出为什么这个查询应该返回0行。。。