FirebirdSQL logo
Caractère spécial d’échappement

Pour exclure les caractères spéciaux (que l’on trouve souvent dans les expressions régulières) du processus de correspondance, ils doivent être échappés.Il n’y a pas de caractères d’échappement spéciaux par défaut — ils sont définis par l’utilisateur si nécessaire :

'Peer (Poire)' SIMILAR TO 'P[^ ]+ \(P[^ ]+\)' ESCAPE '\' -- TRUE
'Pera [Pear]' SIMILAR TO 'P[^ ]+ #[P[^ ]+#]' ESCAPE '#' -- TRUE
'Paron-Appledryck' SIMILAR TO 'P%$-A%' ESCAPE '$' -- TRUE
'Parondryck' SIMILAR TO 'P%--A%' ESCAPE '-' -- FALSE

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';