アクティブは「ブールフィールド」(tiny int、0または1)であると仮定します
# Find all active users
select * from users where active
# Find all inactive users
select * from users where NOT active
つまり、ブール演算子フィールドに「NOT」演算子を直接適用できますか?
SQLのブール値はビットフィールドです。これは1または0を意味します。正しい構文は次のとおりです。
select * from users where active = 1 /* All Active Users */
または
select * from users where active = 0 /* All Inactive Users */
Postgresでは、次を使用できます。
select * from users where active
または
select * from users where active = 't'
整数値を使用する場合は、文字列と見なす必要があります。整数値は使用できません。
select * from users where active = 1 -- Does not work
select * from users where active = '1' -- Works
MS SQL 2008は、trueまたはfalseの文字列バージョンも使用できます...
select * from users where active = 'true'
-- or --
select * from users where active = 'false'
SQL Serverでは、通常使用します。他のデータベースエンジンについては知りません。
select * from users where active = 0
私は個人的には、ブール型のネイティブ型を持たないデータベースに対して、値 'Y'および 'N'でchar(1)を使用することを好みます。文字は、数字を読む人が1がtrueに対応し、0がfalseに対応するようになると想定している数字よりもユーザーフレンドリーです。
(N)Hibernateを使用すると、「Y」と「N」も適切にマップされます。
PostgreSQLはブール型をサポートしているため、SQLクエリはPostgreSQLで完全に機能します。