как установить нулевое значение по умолчанию в Oracle SQL - PullRequest
2 голосов
/ 21 июля 2011

Как установить для пустого набора или нулевого значения значение по умолчанию, например 1?

Пока у меня есть это утверждение, но в случае, если я получаю нулевые значения, я хочу обработать это:

select case when count(*)=0 
                   then 0 
                 else 1 
                   end OUTPUT 
from TESTTBL 
where timestamp = to_char(sysdate-1, 'yyyymmdd')||'0000';

Ответы [ 3 ]

5 голосов
/ 21 июля 2011
SELECT CASE WHEN EXISTS
                   ( SELECT * 
                     FROM TESTTBL 
                     WHERE timestamp = to_char(sysdate-1, 'yyyymmdd') || '0000'
                   )
            THEN 1
            ELSE 0
       END AS OUTPUT
FROM dual                     

РЕДАКТИРОВАТЬ

Добавлено FROM dual, поскольку Oracle не позволяет SELECT без FROM предложения.

5 голосов
/ 21 июля 2011

Вы хотите проверить значение Null и установить в качестве некоторого значения по умолчанию, если это так

select nvl(column_name,'DEFAULT') from TESTBL where timestamp = to_char(sysdate-1,   'yyyymmdd')||'0000';
4 голосов
/ 21 июля 2011

Вот, пожалуйста,

SELECT DECODE(count(*),0,0,
                      1) OUTPUT
   FROM TESTTBL 
   WHERE TIMESTAMP = TO_CHAR(SYSDATE-1, 'yyyymmdd')||'0000'; 

Используйте декодирование как

SELECT supplier_name,
        decode(supplier_id, 10000,  'Google',
                            10001,  'Microsoft'                                
                           'Sony') result
 FROM suppliers;

эквивалентно

IF supplier_id = 10000 THEN
     result := 'Google';

ELSIF supplier_id = 10001 THEN
    result := 'Microsoft';

ELSE
    result := 'Sony';    
END IF;

Или используйте объединение

SELECT coalesce( address1, address2) result
FROM suppliers;

что эквивалентно

IF address1 is not null THEN
     result := address1;

ELSIF address2 is not null THEN
    result := address2;

ELSE
    result := null;

END IF;
...