你好 friend ,我一直在使用这个查询来选择我的 Java 应用程序中的两个字段。
select distinct STU_LEVEL, STU_STREAM from STUDENT_MASTER_TABLE where STATUS_YEAR !=ACADEMIC_YEAR
问题是如果没有数据,应用程序将抛出一个空指针异常。我需要它,如果字段为 Null,则它们默认为 0。我已经用 Coalesce 尝试过这个,但我似乎无法理解它:
select coalesce(distinct (STU_LEVEL,0), (STU_STREAM, '0')) from STUDENT_MASTER_TABLE where STATUS_YEAR !=ACADEMIC_YEAR
请帮忙。
最佳答案
你只需要像这样使用 COALESCE
两次:
SELECT DISTINCT COALESCE(STU_LEVEL,0), COALESCE(STU_STREAM, '0')
FROM STUDENT_MASTER_TABLE
WHERE STATUS_YEAR !=ACADEMIC_YEAR
如果 STU_Level 为 NULL,这将返回 0,如果 STU_Stream 为 NULL,则返回 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
)
还有一个示例 fiddle :http://www.sqlfiddle.com/#!4/29039/1
关于sql - 如果结果为空,则选择默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14982043/