がアクティブ単語でこれはSQLでブール・テストを行う適切な方法ですか?
# Find all active users
select * from users where active
# Find all inactive users
select * from users where NOT active
(0または1小さな整数、)「ブールフィールド」であると想定し、「NOT」演算子は、ブールフィールドに直接適用することができますか?
がアクティブ単語でこれはSQLでブール・テストを行う適切な方法ですか?
# Find all active users
select * from users where active
# Find all inactive users
select * from users where NOT active
(0または1小さな整数、)「ブールフィールド」であると想定し、「NOT」演算子は、ブールフィールドに直接適用することができますか?
SQL Serverでは、通常使用します。私は他のデータベースエンジンについて知らない。
select * from users where active = 0
SQLのブール値はビットフィールドです。これは正しい構文は、1または0のいずれかを意味します...
select * from users where active = 1 /* All Active Users */
または
select * from users where active = 0 /* All Inactive Users */
@ JoseBasilio- PostgreSQLを除く:http://www.postgresql.org/docs/9.1/static/datatype-boolean.html – Yarin
ほとんどのDBでは、フィールドはNULLでもかまいません。アクティブなフィールドのデフォルト値でテーブルを設定しない場合は、NULLもチェックする必要があります。 – IAmNaN
Rite(4)内でSQLiteを使うと、 'f'や 't'(文字ではなく)を使ってクエリを作成しました。上記のクエリを使用すると動作しませんでした。しかし、 "SELECT"モデル。* FROM "model" WHERE "boolean_column" = 'f'''' worked –
MS SQL 2008も真または偽の文字列バージョンを使用することができます
select * from users where active = 'true'
-- or --
select * from users where active = 'false'
うわー、それはクールです...私はうまくいきませんでした。 –
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
が本当かTRUEか1かを予想していたかどうかを調べるために、あなたの答えは非常に役に立ちました – jpwynn
+1 PostgreSQLのブールオプションに関する詳細:http://www.postgresql.org/docs/9.1/static/datatype- boolean.html – Yarin
また、PosgtresはOPの構文を受け入れます: 'where active'、 'not active '。http://www.postgresql.org/docs/8.2/static/functions-logical.htmlを参照してください。 –
私が個人的にチャーを使用して好む(1)の値「Y」および「N」ブール値のネイティブ型を持っていないデータベースに対して有します。文字は、それを読んでいる人が真となり、0が偽に相当すると仮定した数よりも、よりユーザフレンドリーです。
(N)Hibernateを使用すると、 'Y'と 'N'もうまくマッピングされます。
PostgreSQLはブール型をサポートしているため、SQLクエリはPostgreSQLで完全に機能します。
uはSQLite3のは用心使用してrの場合:
それが唯一の 'T' または 'F' を取ります。 1または0ではありません。TRUEまたはFALSE。
ちょうど難しい方法を学んだ。
ブール型フィールドは通常 'int'ではなく 'bit'と入力されます – Davis
「active = 0」が「いいえ」であることに疑いの余地はないので、可能な回避策。 "NOT active"と "active = 0"の間の選択では、私は気にしません - 必ず説明する必要がある場合は、コメントを追加してください。 (将来のコードを扱う人が、真偽を理解していない場合は<-> 1/0の関係、おそらく誰かがあなたのコードに触れてはいけません...) –
@Eric:SQLでは述語が必要ですブール結果を生成する。 "active"はそのような結果を生成しません。なぜなら、 'active'がBITデータ型であっても - BITはブール値ではないため、0..1の範囲の整数値です。したがって、ブール値を生成するためにある種の比較を行う必要があります。 "NOT(active = 1)"は動作しますが、 "not active"は動作しません。 – Tomalak