1

你好朋友我一直在使用这个查询来选择我的 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

请帮忙。

4

1 回答 1

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,如果 STU_Stream 为 NULL,则返回 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
)

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

于 2013-02-20T14:18:32.127 回答