prédicat quantifié (quantified predicate)

Un prédicat quantifié compare une ou plusieurs valeurs à une collection de valeurs.

Read syntax diagramSkip visual syntax diagramexpression =  <> 1 <  >  <=  >= SOMEANYALL(fullselect1)row-value-expression = SOMEANYALL(fullselect2)
Notes:
  • 1 The following forms of the comparison operators are also supported in basic and quantified predicates: ^=, ^<, ^>, !=, !<, and !>. In code pages 437, 819, and 850, the forms ¬=, ¬<, and ¬> are supported. All of these product-specific forms of the comparison operators are intended only to support existing SQL statements that use these operators, and are not recommended for use when writing new SQL statements.

L'instruction FULLSELECT doit identifier un nombre de colonnes identique au nombre d'expressions spécifié à gauche de l'opérateur de prédicat (SQLSTATE 428C4). L'instruction FULLSELECT peut renvoyer n'importe quel nombre de lignes.

Lorsque ALL est spécifié:
  • Le résultat du prédicat est vrai si l'instruction FULLSELECT ne renvoie aucune valeur ou si la relation spécifiée est vraie pour chaque valeur renvoyée par l'instruction FULLSELECT.
  • Le résultat est false si la relation spécifiée est false pour au moins une valeur renvoyée par l'instruction FULLSELECT.
  • Le résultat est inconnu si la relation spécifiée n'est pas fausse pour les valeurs renvoyées par l'instruction FULLSELECT et qu'au moins une comparaison est inconnue en raison de la valeur null.
Lorsque SOME ou ANY est spécifié:
  • Le résultat du prédicat est true si la relation spécifiée est true pour chaque valeur d'au moins une ligne renvoyée par l'instruction FULLSELECT.
  • Le résultat est false si l'instruction FULLSELECT ne renvoie aucune ligne ou si la relation spécifiée est false pour au moins une valeur de chaque ligne renvoyée par l'instruction FULLSELECT.
  • Le résultat est inconnu si la relation spécifiée n'est vraie pour aucune des lignes et qu'au moins une comparaison est inconnue en raison d'une valeur nulle.
Exemples: Utilisez les tableaux suivants pour vous référer aux exemples suivants.
Figure 1 : Tableaux pour les exemples de prédicat quantifié
Exemples de tables pour prédicat quantifié

Exemple 1

  SELECT COLA FROM TBLAB 
     WHERE COLA = ANY(SELECT COLX FROM TBLXY)

Résultats dans 2,3. La sous-requête renvoie (2, 3). COLA dans les lignes 2 et 3 est égal à au moins une de ces valeurs.

Exemple 2

  SELECT COLA FROM TBLAB 
     WHERE COLA > ANY(SELECT COLX FROM TBLXY)

Résultats en 3,4. La sous-requête renvoie (2, 3). COLA dans les lignes 3 et 4 est supérieur à au moins une de ces valeurs.

Exemple 2

  SELECT COLA FROM TBLAB 
     WHERE COLA > ALL(SELECT COLX FROM TBLXY)

Résultats en 4. La sous-requête renvoie (2, 3). COLA à la ligne 4 est le seul qui est supérieur à ces deux valeurs.

Exemple 4

  SELECT COLA FROM TBLAB 
     WHERE COLA > ALL(SELECT COLX FROM TBLXY
                         WHERE COLX<0)

Résultats dans 1,2,3,4, null. La sous-requête ne renvoie aucune valeur. Par conséquent, le prédicat est vrai pour toutes les lignes de TBLAB.

Exemple 5

SELECT * FROM TBLAB 
   WHERE (COLA,COLB+10) = SOME (SELECT COLX, COLY FROM TBLXY)

La sous-requête renvoie toutes les entrées de TBLXY. Le prédicat est vrai pour la sous-requête, par conséquent, le résultat est le suivant:

COLA        COLB       
----------- -----------
          2          12
          3          13

Exemple 6

SELECT * FROM TBLAB 
   WHERE (COLA,COLB) = ANY (SELECT COLX,COLY-10 FROM TBLXY)

La sous-requête renvoie COLX et COLY-10 de TBLXY. Le prédicat est vrai pour la sous-requête, par conséquent, le résultat est le suivant:

COLA        COLB       
----------- -----------
          2          12
          3          13