prédicat de base (basic predicate)
Un prédicat de base compare deux valeurs ou un ensemble de valeurs à un autre ensemble de valeurs.
D'autres opérateurs de comparaison sont également pris en charge.1
Remarques
Lorsqu'une expression-valeur-ligne est spécifiée à gauche de l'opérateur (= ou < >) et qu'une autre expression-valeur-ligne est spécifiée à droite de l'opérateur, les deux expressions-valeur-ligne doivent avoir le même nombre d'expressions de valeur. Les types de données des expressions correspondantes de row-value-expressions doivent être compatibles. La valeur de chaque expression sur le côté gauche est comparée à la valeur de l'expression correspondante sur le côté droit.
Lorsqu'une expression row-value-expression est spécifiée et qu'une instruction fullselect est également spécifiée:
- SELECT * n'est pas autorisé dans les listes de sélection externes de l'instruction fullselect.
- La table de résultats de l'instruction fullselect doit comporter le même nombre de colonnes que l'expression row-value-expression. Les types de données des expressions correspondantes de l'expression row-value-expression et de l'instruction fullselect doivent être compatibles. La valeur de chaque expression sur le côté gauche est comparée à la valeur de l'expression correspondante sur le côté droit.
Le résultat du prédicat dépend de l'opérateur:
- Si l'opérateur est =, le résultat du prédicat est:
- True si toutes les paires d'expressions de valeur correspondantes ont pour résultat true.
- False si une paire d'expressions de valeur correspondantes est évaluée à false.
- Sinon, inconnu (c'est-à-dire si au moins une comparaison des expressions de valeur correspondantes est inconnue en raison d'une valeur nulle et qu'aucune paire d'expressions de valeur correspondantes n'a pour résultat false).
- Si l'opérateur est < >, le résultat du prédicat est:
- True si une paire d'expressions de valeur correspondantes est évaluée à false.
- False si toutes les paires d'expressions de valeur correspondantes ont pour résultat true.
- Sinon, inconnu (c'est-à-dire si au moins une comparaison des expressions de valeur correspondantes est inconnue en raison d'une valeur nulle et qu'aucune paire d'expressions de valeur correspondantes n'est évaluée à true).
Si les opérandes correspondants du prédicat sont des données SBCS, des données mixtes ou des données Unicode, et si la séquence de classement en vigueur au moment de l'exécution de l'instruction n'est pas *HEX, la comparaison des opérandes est effectuée à l'aide de valeurs pondérées pour les opérandes. Les valeurs pondérées sont basées sur la séquence de classement.
Pour les valeurs x et y:
| Prédicat | Est vrai si et seulement si ... |
|---|---|
x = y |
x est égal à y |
x <> y |
x n'est pas égal à y |
x < y |
x est inférieur à y |
x > y |
x est supérieur à y |
x >= y |
x est supérieur ou égal à y |
x <= y |
x est inférieur ou égal à y |
Exemples
Exemple 1: Quatre exemples de prédicats de comparaison.
EMPNO = '528671'
PRTSTAFF <> :VAR1
SALARY + BONUS + COMM < 20000
SALARY > (SELECT AVG(SALARY)
FROM EMPLOYEE)Exemple 2: Liste du nom, du prénom et du salaire de l'employé responsable du projet'OP1000'.
SELECT LASTNAME, FIRSTNME, SALARY
FROM EMPLOYEE X
WHERE EMPNO = ( SELECT RESPEMP
FROM PROJA1 Y
WHERE MAJPROJ = 'OP1000' )Certains claviers doivent utiliser les valeurs hexadécimales pour le symbole not (¬). La valeur hexadécimale varie et dépend du clavier utilisé. Un signe non (¬) ou le caractère qui doit être utilisé à sa place dans certains pays ou régions peut provoquer des erreurs d'analyse syntaxique dans les instructions transmises d'un serveur de base de données à un autre. Le problème se produit si l'instruction subit une conversion de caractères avec certaines combinaisons de CCSID source et cible. Pour éviter ce problème, remplacez un opérateur équivalent par un opérateur comportant un signe non. Par exemple, remplacez'< >'par'¬ =','< ='par'¬ >'et'> ='par'¬ <'.
