필드가 null 인 경우를 제외하고는 필드의 값을 어디에서 표시할지 선택하고 싶습니다. null 인 경우 특수 텍스트를 표시하고 싶습니다. 예를 들어 "Field is null"과 같습니다. 어떻게하면 좋을까요?오라클 : 필드가 null 인 경우 특수 텍스트 표시
// Oracle newbie
필드가 null 인 경우를 제외하고는 필드의 값을 어디에서 표시할지 선택하고 싶습니다. null 인 경우 특수 텍스트를 표시하고 싶습니다. 예를 들어 "Field is null"과 같습니다. 어떻게하면 좋을까요?오라클 : 필드가 null 인 경우 특수 텍스트 표시
// Oracle newbie
나는이 목적을 위해 기능 COALESCE
를 사용하려면 : http://www.techonthenet.com/oracle/functions/nvl.php
그냥 쿼리
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
)
것은 작은 따옴표해야한다고하지이 정확히 NVL가 무엇인지입니다 –
한 리터럴 문자열을 큰 따옴표. – Tony
또한 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
글쎄, 간단한 문제에 대한 불필요한 단어 해결책을 제안한다면 ... mycolumn이 NULL 인 경우는 어떨까요? 그렇다면 NULL, baby 'ELSE mycolumn END' –
Point taken - NVL/COALESCE is 사실 DECODE보다 훨씬 깨끗하고 짧습니다. –
+1, 질문에 대한 가장 우아한 해결책은 아니지만, null에 대해 하나의 텍스트를 표시하고 null이 아닌 다른 텍스트를 표시해야 할 때 도움이되었습니다. – Tony
+1이기 때문에'COALESCE()'는 MySQL뿐만 아니라 다른 SQL 서버에서도 작동하기 때문에 ORACLE이 아닙니다. – ZeissS