web-dev-qa-db-ja.com

これはSQLでブールテストを行う適切な方法ですか?

アクティブは「ブールフィールド」(tiny int、0または1)であると仮定します

# Find all active users
select * from users where active 

# Find all inactive users
select * from users where NOT active 

つまり、ブール演算子フィールドに「NOT」演算子を直接適用できますか?

65
Eric

SQLのブール値はビットフィールドです。これは1または0を意味します。正しい構文は次のとおりです。

select * from users where active = 1 /* All Active Users */

または

select * from users where active = 0 /* All Inactive Users */
74
Jose Basilio

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 
18
Luc M

MS SQL 2008は、trueまたはfalseの文字列バージョンも使用できます...

select * from users where active = 'true'
-- or --
select * from users where active = 'false'
11
Scott Ivey

SQL Serverでは、通常使用します。他のデータベースエンジンについては知りません。

select * from users where active = 0
9
Jonathan Allen

私は個人的には、ブール型のネイティブ型を持たないデータベースに対して、値 'Y'および 'N'でchar(1)を使用することを好みます。文字は、数字を読む人が1がtrueに対応し、0がfalseに対応するようになると想定している数字よりもユーザーフレンドリーです。

(N)Hibernateを使用すると、「Y」と「N」も適切にマップされます。

3
stili

PostgreSQLはブール型をサポートしているため、SQLクエリはPostgreSQLで完全に機能します。

0
Jordi Cabot