Ответ 1
Другим предикатом, который полезен для сравнения значений, которые могут содержать значение NULL, является предикат DISTINCT. Сравнение двух столбцов с использованием нормального равного сравнения (COL1 = COL2) будет истинным, если оба столбца содержат равное ненулевое значение. Если оба столбца равны нулю, результат будет ложным, так как null никогда не будет равен ни одному другому значению, даже другому нулевому значению. Используя предикат DISTINCT, нулевые значения считаются равными. Таким образом, COL1 NOT DISTINCT из COL2 будет истинным, если оба столбца содержат равное ненулевое значение, а также, когда оба столбца являются нулевым значением.
Это означает, что все операции сравнения будут ложными, потому что вы сравниваете неизвестное значение с чем-то. Поэтому независимо от того, какое сравнение вы используете (работает только операция 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