2011-04-01 3 views
5

필드가 null 인 경우를 제외하고는 필드의 값을 어디에서 표시할지 선택하고 싶습니다. null 인 경우 특수 텍스트를 표시하고 싶습니다. 예를 들어 "Field is null"과 같습니다. 어떻게하면 좋을까요?오라클 : 필드가 null 인 경우 특수 텍스트 표시

// Oracle newbie 

답변

4

그냥 쿼리

SELECT NVL (SOMENULLABLEFIELD, '필드가 null') MYTABLE로부터 SOMENULLABLEFIELD 에 NVL PL/SQL 함수를 삽입; 여기

더 자세히 :

select value, decode(value, NULL, 'SPECIAL', value) from 
    (select NULL value from dual 
    union all 
    select 2 value from dual 
) 
+1

것은 작은 따옴표해야한다고하지이 정확히 NVL가 무엇인지입니다 –

+0

한 리터럴 문자열을 큰 따옴표. – Tony

3

또한 DECODE를 사용할 수 있습니다. 주어진 인수에서 첫 번째가 아닌 널 값을 반환합니다 (한 번에 두 개 이상의 필드를 테스트 할 수 있습니다).

SELECT COALESCE(NULL, 'Special text') FROM DUAL 

그래서 이것은 또한 작동합니다 :

SELECT COALESCE(
    First_Nullable_Field, 
    Second_Nullable_Field, 
    Third_Nullable_Field, 
    'All fields are NULL' 
) FROM YourTable 
+0

글쎄, 간단한 문제에 대한 불필요한 단어 해결책을 제안한다면 ... mycolumn이 NULL 인 경우는 어떨까요? 그렇다면 NULL, baby 'ELSE mycolumn END' –

+0

Point taken - NVL/COALESCE is 사실 DECODE보다 훨씬 깨끗하고 짧습니다. –

+0

+1, 질문에 대한 가장 우아한 해결책은 아니지만, null에 대해 하나의 텍스트를 표시하고 null이 아닌 다른 텍스트를 표시해야 할 때 도움이되었습니다. – Tony

관련 문제