supponga attiva è un "campo booleano" (minuscolo int e 0 o 1)È questo il modo corretto di eseguire test booleani in SQL?
# Find all active users
select * from users where active
# Find all inactive users
select * from users where NOT active
In parole, può il "NOT" operatore essere applicato direttamente sul campo booleano?
Sì, come è stato pubblicato, i campi booleani sono solitamente digitati "bit", non "int" – Davis
Presumo che si stia davvero cercando codice bello, dal momento che si sarebbe senza dubbio consapevoli che "attivo = 0" è un soluzione possibile. Nella scelta tra "NOT active" e "active = 0", non mi preoccuperei, se ne hai necessariamente bisogno per essere spiegato, aggiungi un commento. (Nel caso in cui qualcuno che lavora con il codice in futuro non comprenda la relazione 1/0 vero/falso <->, forse qualcuno non dovrebbe toccare il tuo codice, btw ...) –
@Eric: In SQL un predicato deve produce un risultato booleano. Un "dove attivo" non produce un risultato simile, perché anche se "attivo" era un tipo di dati BIT - un BIT non è un valore booleano, è un valore intero con un intervallo di 0..1. Quindi * devi * fare un confronto di qualche tipo per produrre un booleano. "dove NON (attivo = 1)" funzionerebbe, ma non "dove NON è attivo". – Tomalak