2016-10-13 1 views
1

У меня есть таблица План со следующими значениями.Где Критерии на пустое поле

planName(VARCHAR2) | validFrom(timestamp) | validTo(timestamp) 
--------------------------------------------------------------- 
planA    |   20-10-2013 | 

Что запрос на выборку я должен написать с, где критерии по полю «validTo» таким образом, чтобы получить эту строку, даже если значение пусто в «validTo»

для примера, если я пишу запрос как: -

select * 
from plan 
where validFrom > to_Date('20-10-2013', 'DD-MM,YYYY') 
    and validTo < to_Date('31-12-2029', 'DD-MM,YYYY') 

и получения результата, как

planName(VARCHAR2) | validFrom(timestamp) | validTo(timestamp) 
--------------------------------------------------------------- 
        |      | 

но мне нужно получить эта строка также.

ответ

3

Благодаря каждый один я получил подход, надеюсь, это будет поддерживать другие тоже.

select * from plan where COALESCE(validFrom , to_date('12/10/2799', 'DD/MM/YYYY')) > to_Date('20/10/2013', 'DD/MM/YYYY') AND COALESCE(validFrom , to_date('1/01/1700', 'DD/MM/YYYY'))< to_Date('31/12/2029', 'DD/MM/YYYY'); 

Если значение равно null, COALESCE() будет сравниваться со следующим не нулевым значением.

COALESCE - альтернативный подход к NVL.

0

Вам просто нужно добавить ValidTo IS NULL в предложении WHERE

SELECT * 
FROM plan 
WHERE (validFrom > to_Date('20-10-2013', 'DD-MM,YYYY')) 
     AND (validTo < to_Date('31-12-2029', 'DD-MM,YYYY') OR validTo IS NULL) 
+0

Есть ли какие-либо операции, такие как NVL, в этой ситуации? –

+0

Да, но вам нужно указать все имена столбцов для использования функции NVL в столбце ValidTo – Chedy2149

+1

. Null-сценарий предназначен только для «Validto», поэтому вам нужно группировать только «validto» check date и null check.Like validFrom> to_Date ('20 -10-2013 ',' DD-MM, YYYY ') и (validTo

1

Это будет работать,

select * 
from plan 
where 
validFrom > to_Date('20-10-2013', 'DD-MM,YYYY') 
    and 
(validTo < to_Date('31-12-2029', 'DD-MM,YYYY') or validTo is null) 

 Смежные вопросы

  • Нет связанных вопросов^_^