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

时间:2009-05-13 18:59:01

标签: sql boolean-expression

假设active是一个“boolean field”(tiny int,0或1)

# Find all active users
select * from users where active 

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

用语言来说,“NOT”运算符可以直接应用于布尔字段吗?

7 个答案:

答案 0 :(得分:71)

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

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

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

答案 1 :(得分:18)

使用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 

答案 2 :(得分:11)

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

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

答案 3 :(得分:9)

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

select * from users where active = 0

答案 4 :(得分:3)

对于没有boolean本机类型的数据库,我个人更喜欢使用值为'Y'和'N'的char(1)。字母比数字用户更友好,假设读取它的人现在1对应于true而0对应于false。

'Y'和'N'在使用(N)Hibernate时也能很好地映射。

答案 5 :(得分:0)

PostgreSQL支持布尔类型,因此您的SQL查询可以在PostgreSQL中完美运行。

答案 6 :(得分:-2)

如果你使用SQLite3要小心:

只需要't'或'f'。不是1或0.不是TRUE或FALSE。

刚刚学到了很多东西。