Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL dove 1=0 confusione

Questo dipende dal tipo di operazioni booleane su cui stai lavorando. Se vuoi aggiungere un numero variabile di AND affermazioni, quindi utilizzi un'istruzione che restituisce invariabilmente true, ad esempio 1 = 1 . D'altra parte, se vuoi fare lo stesso con OR affermazioni, dovresti usare un'istruzione che restituisca falsa, ad esempio 1 = 0 .

Diciamo che hai una variabile booleana x con un valore di verità indeterminato (potrebbe essere vero, o potrebbe essere falso. Non lo sai.) Ora, se trovi il valore di x AND false , ottieni false , indipendentemente dal valore di x è.

D'altra parte, se guardi x OR true , otterrai true . Ancora una volta, questo è indipendentemente dal valore di verità di x .

Nella tua istruzione, vuoi che il valore hardcoded non abbia alcun effetto sulla logica della query. Poiché false OR a OR b OR c è logicamente equivalente a a OR b OR c , l'istruzione codificata non ha alcun effetto. Nell'altro caso, true AND a AND b AND c è equivalente a a AND b AND c .