朋友们,我一直在使用此查询在我的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)
请帮忙.
你只需要使用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.
在回复您的评论时,看起来您需要使用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
| 归档时间: |
|
| 查看次数: |
6331 次 |
| 最近记录: |