1

こんにちは、私はこのクエリを使用して、Java アプリケーションで 2 つのフィールドを選択しています。

select distinct STU_LEVEL, STU_STREAM from STUDENT_MASTER_TABLE where STATUS_YEAR !=ACADEMIC_YEAR

問題は、データがない場合、アプリケーションが null ポインター例外をスローしていることです。フィールドが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次のように 2 回使用するだけです。

SELECT DISTINCT COALESCE(STU_LEVEL,0), COALESCE(STU_STREAM, '0')
FROM STUDENT_MASTER_TABLE
WHERE STATUS_YEAR !=ACADEMIC_YEAR

これは、NULL の場合は STU_Level に対して 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
)

サンプルのフィドル: http://www.sqlfiddle.com/#!4/29039/1

于 2013-02-20T14:18:32.127 に答える