Содержание
is [not] distinct from
Версии сервера
1.0 | 1.5 | 2.0 | 2.1 | 2.5 | 3.0 |
---|---|---|---|---|---|
Нет | Нет | Да | Да | Да | Да |
Доступно в
Формат
Value1 is [not] distinct from Value2
Описание
Тестирование различия (is distinct from) или отсутствия различия (is not distinct from) двух значений. Два операнда признаются различными, если имеют разные значения, либо если одно из них NULL, а второе не NULL. И наоборот: два операнда не являются различными, если они имеют одинаковое значение, либо если оба они являются NULL.
Таким образом, сравнение двух значений с помощью is not distinct from в целом подобно их сравнению на равенство ( = ) за исключением случая, когда в сравнении участвует NULL. Операция сравнения на равенство ( = ) может возвратить три результата: истину, ложь и NULL. Последнее случается, если любой из операндов сравнения сам является NULL. Хотя в логическом контексте NULL эквивалентно лжи, тем не менее это отдельное (третье) состояние. Тестирование же на отсутствие различий (is not distinct from) всегда возвращает либо истину, либо ложь. В частности, если один и только один из операндов является NULL, то результатом будет ложь (зафиксировано различие). А если оба операнда NULL - тогда истина (зафиксировано отсутствие различий).
Аналогичные рассуждения верны в отношении пары операторов неравенства (<>) и различия (is distinct from).
Если на поле существует индекс то он может быть использован при is NOT DISTINCT
Примеры, возвращающие "истину"
1 IS NOT DISTINCT FROM 1 1 IS DISTINCT FROM 0 1 IS DISTINCT FROM NULL NULL IS NOT DISTINCT FROM NULL
Обсуждение