2016-07-27 84 views
0

在下面的查询,nvl可以返回不同的数据类型作为它的参数吗?

select nvl(gender, 'not available') from member

我想查询返回“不可用”时的性别为空。但似乎第二个参数必须是与第一个参数相同的数据类型(在本例中,gender是CHAR(1),但第二个参数是varchar或char(n)而不是CHAR(1)。在主表中更改数据类型? 我使用亚马逊的红移。 我使用NVL声明组也在所以我需要的解决方案要简洁尽可能。

+0

什么是性别数据类型?什么是错误?您可以将其转换为select中的字符串,而不是更改表中列的类型。 –

+0

这可能很大程度上取决于使用的数据库,请为相关的DBMS添加标签。 –

+1

使用'coalesce()'。它是ANSI标准版本,可用于更多数据库。 –

回答

1

可以用case

尝试
select case gender when is null then 'not available' else gender 
from my_table 
+0

是的,它的工作原理,但我想用它分组,是否有任何简洁的解决方案? – sia

+0

好,对于你的团体应该发布一个新的正确的描述问题..我无法想象你的问题的实际问题,是不公平的改变另一个问题..所以如果我的回答是正确的请标记为接受..发布新的问题,并最终评论我的新链接 – scaisEdge

-1

这将工作:

先找性别(性别选择会员WHERE .....)

if gender is null 
begin 
select 'not available' as result 
end 
else 
begin 
<-- do your query--> 
end 
+0

SQL中没有'if'(即使有 - 'gender'来自哪里?这是表中的一列) –

+0

他应该首先查找性别(SELECT性别FROM成员WHERE .....)比运行。如果没有IF,我很抱歉。 – abcool

相关问题