这是在SQL中进行布尔测试的正确方法吗?

Eri*_*ric 69 sql boolean-expression

假设active是一个"boolean field"(小int,0或1)

# Find all active users
select * from users where active 

# Find all inactive users
select * from users where NOT active 
Run Code Online (Sandbox Code Playgroud)

换句话说,"NOT"运算符可以直接应用于布尔字段吗?

Jos*_*lio 77

SQL中的布尔值是位字段.这意味着1或0.正确的语法是:

select * from users where active = 1 /* All Active Users */
Run Code Online (Sandbox Code Playgroud)

要么

select * from users where active = 0 /* All Inactive Users */
Run Code Online (Sandbox Code Playgroud)

  • @ JoseBasilio- PostgreSQL除外:http://www.postgresql.org/docs/9.1/static/datatype-boolean.html (12认同)

Luc*_*c M 19

使用Postgres,您可以使用

select * from users where active
Run Code Online (Sandbox Code Playgroud)

要么

select * from users where active = 't'
Run Code Online (Sandbox Code Playgroud)

如果要使用整数值,则必须将其视为字符串.您不能使用整数值.

select * from users where active = 1   -- Does not work

select * from users where active = '1' -- Works 
Run Code Online (Sandbox Code Playgroud)

  • 关于PostgreSQL布尔选项的更多信息:http://www.postgresql.org/docs/9.1/static/datatype-boolean.html (4认同)

Sco*_*vey 11

MS SQL 2008也可以使用字符串版本的true或false ...

select * from users where active = 'true'
-- or --
select * from users where active = 'false'
Run Code Online (Sandbox Code Playgroud)


Jon*_*len 10

在SQL Server中,您通常会使用.我不知道其他数据库引擎.

select * from users where active = 0
Run Code Online (Sandbox Code Playgroud)