нулевая дата в поисковом запросе - PullRequest
3 голосов
/ 08 марта 2011

это простой вопрос, но я не могу придумать, как это сделать в данный момент.

У меня есть поле даты в поисковом запросе.Запрос не является динамическим, или это будет проще.Мне нужно иметь возможность возвращать записи, которые соответствуют введенной дате или, если дата не введена, то она должна вернуть все.

Это то, что у меня есть, но оно не работает.Он не возвращает никаких строк, когда есть критерии или нет.

AND ( (table.dateField = p_dateField) 
   OR (table.dateField = table.dateField and table.dateField is null))

заранее спасибо.

После часа работы с ним я придумал следующее:1010 *

and (  
      ( p_dateField IS NOT NULL AND table.dateField = p_dateField)
         OR ( p_dateField IS NULL AND (table.dateField is null or (table.dateField is not null))
     )

Это работает для тех нескольких тестов, которые я смог выполнить.Если кто-нибудь может предложить лучший метод, пожалуйста, сделайте.

Спасибо!

Ответы [ 4 ]

4 голосов
/ 08 марта 2011

Вы пробовали:

AND ( (table.dateField = p_dateField AND NOT(p_dateField is NULL)) OR p_dateField is NULL)

Я предполагаю, что p_dateField является параметром Date

3 голосов
/ 09 марта 2011

просто напишите, где ваше условие, как это:

where previous_conditions
  AND ((table.dateField = p_dateField) or (p_dateField is null))
  and other_conditions;
1 голос
/ 09 марта 2011

Как насчет:

AND table.dateField = NVL(pdateField, table.dateField)

Предполагается, что table.dateField не содержит нулей. Если это так, то возможно:

AND NVL(table.dateField, SYSDATE+10000) = 
        NVL(pdateField, NVL(table.dateField, SYSDATE+10000)

Предполагается, что значение SYSDATE + 10000 отсутствует в ваших данных.

0 голосов
/ 09 марта 2011

Я бы попробовал использовать предложение NVL в разделе ИЛИ:

AND ( (table.dateField = p_dateField) 
      OR (NVL(p_datefield, to_date('01/01/1901','MM/DD/YYYY')) =
           to_date('01/01/1901,'MM/DD/YYYY')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...