====== is [not] distinct from ====== ===== Версии сервера ===== ^ 1.0 ^ 1.5 ^ 2.0 ^ 2.1 ^ 2.5 ^ 3.0 ^ | Нет | Нет | Да | Да | Да | Да | ===== Доступно в ===== [[raznovidnosti_jazyka_sql|DSQL]], [[raznovidnosti_jazyka_sql|ISQL]], [[raznovidnosti_jazyka_sql|PSQL]] ===== Формат ===== 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