假设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”运算符可以直接应用于布尔字段吗?
答案 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。
刚刚学到了很多东西。