Augmenter le ALL/ANY
Réponses
Je préfère toutes les solutions qui utilisent all
o any
pour parvenir au résultat, en appréciant les notes supplémentaires (par exemple, à propos de NULL s). En complément, voici une façon de penser à ces opérateurs.
Vous pouvez les considérer comme opérateurs de court-circuit :
-
all(array)
passe en revue toutes les valeurs du tableau, en les comparant à la valeur de référence à l'aide de l'opérateur fourni. Dès qu'une comparaison donne false
le processus se termine par un faux, sinon un vrai (comparable à la logique du court-circuit). and
.)
-
any(array)
passe en revue toutes les valeurs du tableau, en les comparant à la valeur de référence à l'aide de l'opérateur fourni. Dès qu'une comparaison donne true
le processus se termine par un vrai, sinon un faux. (Comparable à la logique du court-circuit or
.)
C'est pourquoi 3 <> any('{1,2,3}')
ne donne pas le résultat escompté : Le processus compare 3 à 1 pour l'inégalité, ce qui est vrai, et renvoie immédiatement vrai. Une seule valeur du tableau différente de 3 suffit à rendre la condition entière vraie. Le 3 dans la dernière position du tableau n'est probablement jamais utilisé.
3 <> all('{1,2,3}')
d'autre part, s'assure que todo ne sont pas égales 3. Il passera en revue toutes les comparaisons qui donnent un résultat vrai jusqu'à un élément qui donne un résultat faux (le dernier dans ce cas), pour retourner faux comme résultat global. C'est ce que veut l'OP.