朋友们,我一直在使用此查询在我的Java应用程序中选择两个字段。
select distinct STU_LEVEL, STU_STREAM from STUDENT_MASTER_TABLE where STATUS_YEAR !=ACADEMIC_YEAR
问题是如果没有数据,应用程序抛出一个空指针Exception。我需要它,如果字段是Null,那么它们默认为0.我用Coalesce尝试了这个但是我似乎无法得到它:
select coalesce(distinct (STU_LEVEL,0), (STU_STREAM, '0')) from STUDENT_MASTER_TABLE where STATUS_YEAR !=ACADEMIC_YEAR
请帮忙。
答案 0 :(得分:5)
你需要像这样两次使用COALESCE
:
SELECT DISTINCT COALESCE(STU_LEVEL,0), COALESCE(STU_STREAM, '0')
FROM STUDENT_MASTER_TABLE
WHERE STATUS_YEAR !=ACADEMIC_YEAR
如果STU_Level为NULL,则返回0;如果为NULL,则返回0为STU_Stream。
在回复您的评论时,看起来您需要使用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
)