Mysql
 sql >> Base de données >  >> RDS >> Mysql

Mysql où 1 =0 confusion

Cela dépend du type d'opérations booléennes sur lesquelles vous travaillez. Si vous souhaitez ajouter un nombre variable de AND instructions, vous utilisez une instruction qui est invariablement évaluée à true, telle que 1 = 1 . Par contre, si vous voulez faire la même chose avec OR instructions, vous devez utiliser une instruction qui donne la valeur false, telle que 1 = 0 .

Disons que vous avez une variable booléenne x avec une valeur de vérité indéterminée (cela peut être vrai ou faux. Vous ne savez pas.) Maintenant, si vous trouvez la valeur de x AND false , vous obtenez false , quelle que soit la valeur de x est.

D'un autre côté, si vous regardez x OR true , vous obtiendrez true . Encore une fois, c'est indépendamment de la valeur de vérité de x .

Dans votre instruction, vous souhaitez que la valeur codée en dur n'ait aucun effet sur la logique de la requête. Depuis false OR a OR b OR c est logiquement équivalent à a OR b OR c , l'instruction codée en dur n'a aucun effet. Dans l'autre cas, true AND a AND b AND c est équivalent à a AND b AND c .