CodeGym /课程 /SQL SELF /逻辑数据类型:BOOLEAN

逻辑数据类型:BOOLEAN

SQL SELF
第 15 级, 课程 3
可用

你已经见过用来存数字和文本的数据类型了。现在该聊聊逻辑数据类型——BOOLEAN。这大概是最“实诚”的数据类型了,因为它只回答两个问题:“是”还是“不是”。有时候也会有个“可能吧”(也就是NULL)。

逻辑数据类型BOOLEAN只存这几种值:

  • TRUE(真);
  • FALSE(假);
  • NULL(没有值)。

想象一下开关:它可以是开着的TRUE,关着的FALSE,或者灯泡突然没了,状态未知NULL。

可以说,逻辑数据类型是SQL里做决策和写条件逻辑的基础。没有它,写查询的时候都没法正常过滤或者标记某个东西的状态。

使用场景举例

逻辑类型在数据库里用得超多。比如下面这些实际用法:

标志和状态。

比如,is_active字段可以表示用户是不是激活的(TRUE)或者没激活(FALSE)。

SELECT username, is_active
FROM users 
WHERE is_active = TRUE;

进度控制。

比如,is_complete字段可以存任务是不是完成了。

SELECT task_name
FROM tasks 
WHERE is_complete = FALSE;

可用性检查。

is_available字段可以反映商品在仓库里是不是有货。

怎么在PostgreSQL里用BOOLEAN?

PostgreSQL里的逻辑类型就叫BOOLEAN。来,咱们建个表,随便加点字段:

  • 任务唯一ID
  • 任务名称
  • 任务完成的逻辑状态

然后往表里插几条记录:

task_id task_name - VARCHAR(255) is_complete - BOOLEAN
1 写报告 false
2 去超市 true
3 读书 null

数据查询

现在看看怎么根据逻辑值查数据。比如只查没完成的任务,可以这样写:

SELECT task_name
FROM tasks 
WHERE is_complete = FALSE;

这个查询只会返回is_complete等于FALSE的任务。

结果:

task_name
写报告

用BOOLEAN时的注意点

值过滤

用逻辑类型时你可以用下面这些写法:

  • = TRUE —— 想明确指定值为真的时候用。
  • = FALSE —— 想查假的值时用。
  • IS NULL —— 想查没有值的记录时用。

举个例子:

SELECT task_name
FROM tasks 
WHERE is_complete IS NULL;

条件简写

PostgreSQL挺“聪明”的,很多时候你都不用写= TRUE。比如:

SELECT task_name
FROM tasks 
WHERE is_complete;

这个查询和WHERE is_complete = TRUE是一样的。

用BOOLEAN常见的坑

刚开始用新数据类型,踩坑很正常。下面这些是常见问题:

和NULL比较。 新手经常写is_active = NULL。但NULL不能用=比较。要判断是不是NULL,得用IS NULL或者IS NOT NULL。

写多余的= TRUE。 有时候程序员会写多余的东西,比如WHERE is_active = TRUE。这不是错,但其实可以直接写WHERE is_active,更简洁。

字符串用错。 逻辑类型是强类型的。你不能写is_active = 'TRUE'或者is_active = 'FALSE'。要直接用TRUE、FALSE或者NULL。

为啥要这样?

你可能会想:为啥要搞这么复杂,还要加个BOOLEAN?直接用数字不行吗,比如1代表真,0代表假?

答案很简单:BOOLEAN让你的代码和数据更直观。别人一看有个is_active字段,就知道这是个逻辑(是/否)属性。这让数据库结构更好懂,也让你的数据模型对其他开发者来说更清晰。

2
任务
SQL SELF, 第 15 级, 课程 3
已锁定
逻辑值的文本解释
逻辑值的文本解释
2
任务
SQL SELF, 第 15 级, 课程 3
已锁定
按布尔值过滤
按布尔值过滤
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION