2013-02-20 78 views
1

朋友您好,我一直在使用此查询来选择我的Java应用程序中的一些两个字段。如果结果为空,请选择默认值

select distinct STU_LEVEL, STU_STREAM from STUDENT_MASTER_TABLE where STATUS_YEAR !=ACADEMIC_YEAR 

问题是如果没有数据,应用程序抛出空指针异常。我需要它,例如,如果字段为空,那么他们被默认为0。我曾与合并试过,但我似乎无法得到它喜欢:

select coalesce(distinct (STU_LEVEL,0), (STU_STREAM, '0')) from STUDENT_MASTER_TABLE where STATUS_YEAR !=ACADEMIC_YEAR 

请帮助。

回答

5

你只需要使用COALESCE两次这样的:

SELECT DISTINCT COALESCE(STU_LEVEL,0), COALESCE(STU_STREAM, '0') 
FROM STUDENT_MASTER_TABLE 
WHERE STATUS_YEAR !=ACADEMIC_YEAR 

这将为STU_Level返回0,如果它是NULL,0为STU_Stream如果是NULL。

SQL Fiddle Demo

在回答您的评论,它看起来像你需要使用UNION得到您想要的结果时,没有记录发现:

SELECT DISTINCT COALESCE(STU_LEVEL,0), COALESCE(STU_STREAM, '0') 
FROM STUDENT_MASTER_TABLE 
WHERE STATUS_YEAR !=ACADEMIC_YEAR 
UNION 
SELECT 0,'0' FROM DUAL 
WHERE NOT EXISTS (
    SELECT DISTINCT COALESCE(STU_LEVEL,0), COALESCE(STU_STREAM, '0') 
    FROM STUDENT_MASTER_TABLE 
    WHERE STATUS_YEAR !=ACADEMIC_YEAR 
) 

和样品小提琴:http://www.sqlfiddle.com/#!4/29039/1

+0

它仍然返回Null,并标记为COALESCE(STU_LEVEL,0)和COALESCE(STU_STREAM,'0') – ErrorNotFoundException 2013-02-20 14:27:00

+0

@Stanley - 您是否看到SQL小提琴 - 您是否可以使用数据更新它以显示您的意思? – sgeddes 2013-02-20 14:27:35

+0

看到小提琴它在小提琴上工作正常,但我希望它能在我的数据库上工作。 – ErrorNotFoundException 2013-02-20 14:35:21