如果result为null,请选择默认值

Err*_*ion 1 sql oracle11g

朋友们,我一直在使用此查询在我的Java应用程序中选择两个字段.

select distinct STU_LEVEL, STU_STREAM from STUDENT_MASTER_TABLE where STATUS_YEAR !=ACADEMIC_YEAR
Run Code Online (Sandbox Code Playgroud)

问题是如果没有数据,应用程序抛出一个空指针Exception.我需要它,如果字段是Null,那么它们默认为0.我用Coalesce尝试了这个但我似乎无法得到它:

select coalesce(distinct (STU_LEVEL,0),  (STU_STREAM, '0')) from STUDENT_MASTER_TABLE where STATUS_YEAR !=ACADEMIC_YEAR
Run Code Online (Sandbox Code Playgroud)

请帮忙.

sge*_*des 5

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

SELECT DISTINCT COALESCE(STU_LEVEL,0), COALESCE(STU_STREAM, '0')
FROM STUDENT_MASTER_TABLE
WHERE STATUS_YEAR !=ACADEMIC_YEAR
Run Code Online (Sandbox Code Playgroud)

如果STU_Level为NULL,则返回0;如果为NULL,则为STU_Stream返回0.

SQL小提琴演示

在回复您的评论时,看起来您需要使用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
)
Run Code Online (Sandbox Code Playgroud)

还有一个小提琴:http://www.sqlfiddle.com/#!4/29039/1