现在我有一个查询给我一个空格,这很好,但我真正需要的是如果它为null则返回“Empty”。我已经玩了几个选项,现在这是我最好的查询,但我不知道怎么让它显示“EMPTY”如果为null。
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是数字 paramTwo是varchar
我正在寻找的结果基本上是这样的:
如果行有数据,则应返回123,Name
如果行没有数据,则应为000,'空'
答案 0 :(得分:4)
我怀疑paramTwo(varchar2 one)实际上不是null,请尝试:
SELECT nvl(paramOne, 0), nvl(trim(paramTwo), 'EMPTY')
FROM tableName
WHERE search_param = 'x'
答案 1 :(得分:2)
这听起来有点像你应该考虑在客户端而不是在你的查询中...但你可以硬编码'EMPTY'
而不是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'
);
答案 2 :(得分:1)
如果要将NULL值转换为非NULL值,请使用NVL
函数
SELECT NVL( paramOne, 'Empty' ),
NVL( paramTwo, 'Empty' )
FROM table_name
WHERE search_param = 'x';
如果您正在尝试做其他事情,如果您可以发布一些示例数据和预期输出,那将非常有用。