アクティブが「ブールフィールド」(0または1の小さなint)であると想定します。
# Find all active users
select * from users where active
# Find all inactive users
select * from users where NOT active
つまり、「NOT」演算子をブールフィールドに直接適用できますか?
アクティブが「ブールフィールド」(0または1の小さなint)であると想定します。
# 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 */
SELECT “model".* FROM “model" WHERE “boolean_column" = ‘f'
働いた
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
where active
、where not active
。参照してくださいpostgresql.org/docs/8.2/static/functions-logical.html
MS SQL 2008は、trueまたはfalseの文字列バージョンを使用することもできます...
select * from users where active = 'true'
-- or --
select * from users where active = 'false'
PostgreSQLはブール型をサポートしているため、SQLクエリはPostgreSQLで完全に機能します。
SQLite3を使用している場合は、次の点に注意してください。
't'または 'f'のみかかります。1または0ではありません。TRUEまたはFALSEではありません。
難しい方法を学びました。