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:
El resultado de un predicado DISTINCT no puede ser nulo.
| 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). |
- 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
devuelve las filas 1 y 3.SELECT * FROM T1 WHERE C1 IS DISTINCT FROM :HV;Si HV=2, la sentencia
devuelve la fila 2.SELECT * FROM T1 WHERE C1 IS NOT DISTINCT FROM :HV; - Si HV=NULL, la sentencia
devuelve las filas 1 y 2.SELECT * FROM T1 WHERE C1 IS DISTINCT FROM :HV;Si HV=NULL, la sentencia
devuelve la fila 3.SELECT * FROM T1 WHERE C1 IS NOT DISTINCT FROM :HV;
