FirebirdSQL logo

IS DISTINCT FROM

Disponible en

DSQL, PSQL.

Syntaxe
<operand1> IS [NOT] DISTINCT FROM <operand2>

Deux opérandes sont considérés comme DISTINCT (différents) s’ils ont des valeurs différentes, ou si l’un d’eux est NULL et l’autre non.Elles sont considérées comme NOT DISTINCT (égales) si elles ont les mêmes valeurs ou si elles sont toutes deux NULL.

L’option IS [NOT] DISTINCT FROM renvoie toujours VRAI ou FAUX et jamais UNKNOWN (NULL) (valeur inconnue). En revanche, les opérateurs “=” et “<>” renvoient UNKNOWN (NULL) si l’un ou les deux opérandes sont NULL.

Table 1. Les résultats des différents opérateurs de comparaison

Caractéristiques de l’opérande

Les résultats des différents opérateurs

=

IS NOT DISTINCT FROM

<>

IS DISTINCT FROM

Mêmes valeurs

TRUE

TRUE

FALSE

FALSE

Valeurs différentes

FALSE

FALSE

TRUE

TRUE

les deux NULL

UNKNOWN

TRUE

UNKNOWN

FALSE

un NULL et l’autre non NULL

UNKNOWN

FALSE

UNKNOWN

TRUE

Example 1. Utilisation d’un prédicat IS [NOT] DISTINCT FROM
SELECT ID, NAME, TEACHER
FROM COURSES
WHERE START_DAY IS NOT DISTINCT FROM END_DAY

IF (NEW.JOB IS DISTINCT FROM OLD.JOB) THEN
  POST_EVENT 'JOB_CHANGED';

Logique IS [NOT]

Disponible en

DSQL, PSQL.

Syntaxe
<value> IS [NOT] {TRUE | FALSE | UNKNOWN}

L’opérateur IS vérifie que l’expression du côté gauche correspond à la valeur logique du côté droit.L’expression du côté gauche doit être de type logique, sinon une erreur sera lancée.

Pour un type de données logique, le prédicat IS [NOT] UNKNOWN est équivalent à IS [NOT] NULL.

Note
Note:

Seuls les littéraux TRUE, FALSE, UNKNOWN peuvent être utilisés dans le côté droit du prédicat, mais pas les expressions.

Example 1. Utilisation de l’opérateur IS avec un type de données logique
-- Vérifier la valeur FALSE
SELECT * FROM TBOOL WHERE BVAL IS FALSE
ID           BVAL
============ =======
2            <false>
-- Vérifier la valeur UNKNOWN
SELECT * FROM TBOOL WHERE BVAL IS UNKNOWN
ID           BVAL
============ =======
3            <null>