Commenti(0)
Gli operatori logici
Gli indispensabili operatori logici in MySQL
MySQL prevede quattro operatori logici: NOT, AND, OR e XOR.
Gli operatori logici dovrebbero operare nel campo della logica booleana, quella cioè che si occupa di calcolare se un’asserzione sia vera (TRUE) o falsa (FALSE). In realtà in MySQL il tipo di dati BOOL non esiste, ma viene emulata più o meno come nel linguaggio C. TRUE viene considerato sinonimo di 1, ma qualsiasi valore diverso da 0 verrà comunque considerato vero, mentre FALSE viene considerato sinonimo di 0; esiste anche la parola chiave UNKNOWN, che probabilmente è stata implementata perchè prima o poi MySQL aggiungerà il supporto a una logica a 3 valori, ma al momento UNKNOWN è un sinonimo di NULL. Un campo dichiarato di tipo BOOL (o BOOLEAN) sarà in realtà di tipo TINYINT.
NOT è l’unico operatore unario, cioè che richiede un unico termine. Esso inverte il valore al quale si riferisce: NOT TRUE è sinonimo di FALSE e NOT FALSE è sinonimo di TRUE.
AND restituisce 1 se entrambi i termini a cui si riferisce sono veri, mentre in tutti gli altri casi restituisce 0.
OR restituisce 1 se anche solo uno dei due termini è vero, mentre restituisce 0 solo se sono entrambi falsi. Naturalmente, combinando OR e NOT, è possibile verificare che entrambi i termini siano falsi.
XOR sta per eXclusive OR e restituisce 1 se soltanto uno dei due termini è vero, mentre se sono entrambi veri o entrambi falsi restituisce 0. Equivale a col1 OR col2 AND NOT (col1 AND col2).
AND può essere sostituito da &&, OR può essere sostituito da || e NOT può essere sostituito da !, mentre XOR non ha un sostituto.
Precedenza
NOT ha precedenza rispetto a AND, che ha precedenza rispetto a XOR, che ha precedenza rispetto a OR.
AND e && hanno la stessa precedenza, così come OR e || (diversamente da quanto accade in PHP). Se l’SQL MODE HIGH_NOT_PRECEDENCE è impostato ! e NOT hanno la stessa precedenza, altrimenti ! ha precedenza rispetto a NOT.
Se si vuole modificare la precedenza degli operatori, o se non si è certi di quale operatore abbia la precedenza, si possono utilizzare le parentesi come negli esempi mostrati sopra.
Condividi su:
Esprimi un voto:
Argomenti chiave:

MySQL Report un tool di shell per tenere tutto sotto controllo