Predicado DISTINCT

El predicado DISTINCT compara dos expresiones y la evaluación da un resultado verdadero (TRUE) si los valores no son idénticos.

El resultado de un predicado DISTINCT depende de si una de las expresiones de entrada es nula o de si lo son las dos:
Expresiones de entrada IS DISTINCT FROM (es distinto de) IS NOT DISTINCT FROM (no es distinto de)
Ambas entradas son no nulas. La evaluación da un resultado verdadero (TRUE) si las entradas no son idénticas y un resultado falso (FALSE) si lo son. Equivale al operador <>. La evaluación da un resultado falso (FALSE) si las entradas no son idénticas y un resultado verdadero (TRUE) si lo son. Equivale al operador =.
Una entrada es nula. La evaluación da un resultado verdadero (TRUE). La evaluación da un resultado falso (FALSE).
Ambas entradas son nulas. La evaluación da un resultado falso (FALSE). La evaluación da un resultado verdadero (TRUE).
El resultado de un predicado DISTINCT no puede ser nulo.
Read syntax diagramSkip visual syntax diagram expression1 IS NOT DISTINCT FROM expression2
expresión1 y expresión2
Las expresiones que se van a comparar.

ejemplos

Supongamos que HV es una variable del lenguaje principal y T1 es una tabla con una sola columna (C1) y tres filas:
C1
----
1
2
NULL
  • Si HV=2, la sentencia
    SELECT * FROM T1 WHERE C1 IS DISTINCT FROM :HV;
    devuelve las filas 1 y 3.
    Si HV=2, la sentencia
    SELECT * FROM T1 WHERE C1 IS NOT DISTINCT FROM :HV;
    devuelve la fila 2.
  • Si HV=NULL, la sentencia
    SELECT * FROM T1 WHERE C1 IS DISTINCT FROM :HV;
    devuelve las filas 1 y 2.
    Si HV=NULL, la sentencia
    SELECT * FROM T1 WHERE C1 IS NOT DISTINCT FROM :HV;
    devuelve la fila 3.