Является ли Null большим, чем любой тип данных даты?

У меня этот запрос в DB2

SELECT * FROM SOMESCHEMA.SOMETABLE WHERE SYSDATE > @A 

Если SYSDATE имеет NULL , будет ли оно больше любого значения @A , если предположить, что @A и SOMESCHEMA.SOMETABLE.SYSDATE являются типом данных даты ?

Пожалуйста помоги. Заранее спасибо.

Другим предикатом, который полезен для сравнения значений, которые могут содержать значение NULL, является предикат DISTINCT. Сравнение двух столбцов с использованием нормального равного сравнения (COL1 = COL2) будет истинным, если оба столбца содержат равное ненулевое значение. Если оба столбца равны нулю, результат будет ложным, так как null никогда не будет равен ни одному другому значению, даже другому нулевому значению. Используя предикат DISTINCT, нулевые значения считаются равными. Таким образом, COL1 NOT DISTINCT из COL2 будет истинным, если оба столбца содержат равное ненулевое значение, а также, когда оба столбца являются нулевым значением.

DB2 Null Handling

Это означает, что все операции сравнения будут ложными, потому что вы сравниваете неизвестное значение с чем-то. Поэтому независимо от того, какое сравнение вы используете (работает только операция IS NULL / IS NOT NULL!), Она будет ложной.

Если вы хотите, чтобы запрос работал, вы должны использовать что-то вроде

 SELECT * FROM SOMESCHEMA.SOMETABLE WHERE COALESCE(SYSDATE, TIMESTAMP_FORMAT('0001-01-01 23:59:59', 'YYYY-MM-DD HH24:MI:SS')) > @A 

Другая возможность – использовать IS NULL для проверки, если значение равно null:

  SELECT * FROM SOMESCHEMA.SOMETABLE WHERE SYSDATE > @A OR SYSDATE IS NULL 

будет включать значение в набор возвращаемых значений вместо функции COALESCE . Однако он работает только с простыми случаями.

Вы можете использовать это решение для сравнения двух допустимых дат (P.EndDate, C.EndDate):

 [MinDate] = CASE WHEN ISNULL(C.EndDate,P.EndDate) <= ISNULL(P.EndDate,C.EndDate) THEN ISNULL(C.EndDate,P.EndDate) ELSE ISNULL(P.EndDate,C.EndDate) END