MySQL 在MySQL中展示TRUE和FALSE值
在MySQL中,我们常常需要处理布尔型数据,例如判断一个值是否为真或假。然而,很多人会发现MySQL中并没有BOOLEAN数据类型,这该怎么办呢?本文将为您介绍在MySQL中展示TRUE和FALSE值的方法。
阅读更多:MySQL 教程
TINYINT数据类型
虽然MySQL中没有BOOLEAN数据类型,但是我们可以使用TINYINT数据类型来代替BOOLEAN。这是因为TINYINT数据类型只占用1个字节,可以存储0或1的值,正好符合TRUE(1)和FALSE(0)的概念。此外,我们还可以通过枚举类型ENUM来展示TRUE和FALSE。
使用TINYINT数据类型
下面是一个案例,假设我们需要记录一个商品是否下架,我们可以使用TINYINT数据类型来代替BOOLEAN。我们将下架的商品标记为1,没有下架的商品标记为0。在MySQL中创建表的SQL语句如下:
CREATE TABLE products (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
price DECIMAL(8,2) NOT NULL,
is_sold TINYINT(1) NOT NULL DEFAULT 0
);
在上述代码中,我们在products表中新增了一列is_sold,该列的数据类型为TINYINT,长度为1,默认值为0。为了方便查询数据,我们可以在is_sold列上添加索引。
接着,我们往products表中插入几行数据,代码如下:
INSERT INTO products(name, price, is_sold) VALUES
('iPhone 12', 9999.99, 0),
('Mi 11', 3999.99, 1),
('Mate 40', 7999.99, 0),
('Galaxy S21', 7999.99, 1);
上述代码中,我们插入了4行数据,有两个商品已经下架了(is_sold为1),另外两个商品还在销售中(is_sold为0)。
下面是查询使用TINYINT数据类型的SQL语句:
SELECT * FROM products WHERE is_sold = 1;
上述代码表示查询已经下架的商品,它会返回如下结果:
+----+----------+--------+---------+
| id | name | price | is_sold |
+----+----------+--------+---------+
| 2 | Mi 11 | 3999.99| 1 |
| 4 |Galaxy S21| 7999.99| 1 |
+----+----------+--------+---------+
使用枚举类型ENUM
除了使用TINYINT数据类型外,我们还可以使用枚举类型ENUM来展示TRUE和FALSE。枚举类型可以存储一个固定的值集合,并且可以方便地进行检索和比较。
下面是一个案例,我们将通过枚举类型ENUM来判断一个商品是否下架。与上面的案例相同,我们依旧需要记录商品是否下架。但这一次,我们使用枚举类型来代替TINYINT数据类型。在MySQL中创建表的SQL语句如下:
CREATE TABLE products_enum (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
price DECIMAL(8,2) NOT NULL,
is_sold ENUM('TRUE', 'FALSE') NOT NULL DEFAULT 'FALSE'
);
在上述代码中,我们新增了一列is_sold,该列的数据类型为ENUM,枚举值为TRUE和FALSE,默认值为FALSE。
接着,我们往products_enum表中插入几行数据,代码如下:
INSERT INTO products_enum(name, price, is_sold) VALUES
('iPhone 12', 9999.99, 'FALSE'),
('Mi 11', 3999.99, 'TRUE'),
('Mate 40', 7999.99, 'FALSE'),
('Galaxy S21', 7999.99,'TRUE');
上述代码中,我们插入了4行数据,有两个商品已经下架了(is_sold为TRUE),另外两个商品还在销售中(is_sold为FALSE)。
下面是查询使用枚举类型ENUM的SQL语句:
SELECT * FROM products_enum WHERE is_sold = 'TRUE';
上述代码表示查询已经下架的商品,它会返回如下结果:
+----+----------+--------+---------+
| id | name | price | is_sold |
+----+----------+--------+---------+
| 2 | Mi 11 | 3999.99| TRUE |
| 4 |Galaxy S21| 7999.99| TRUE |
+----+----------+--------+---------+
CASE语句
除了使用TINYINT数据类型和枚举类型ENUM外,我们还可以使用CASE语句来展示TRUE和FALSE值。在MySQL中,CASE语句可以根据某个条件返回不同的结果。
下面是一个案例,假设我们需要记录一个学生是否及格,我们可以使用CASE语句来代替BOOLEAN。我们将及格的学生标记为”PASS”,不及格的学生标记为”FAIL”。在MySQL中创建表的SQL语句如下:
CREATE TABLE students (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
score DECIMAL(8,2) NOT NULL
);
在上述代码中,我们创建了一个名为students的表,该表用于记录学生信息。
接着,我们往students表中插入几行数据,代码如下:
INSERT INTO students(name, score) VALUES
('小明', 85),
('小红', 60),
('小刚', 75),
('小李', 95);
上述代码中,我们插入了4行数据,每个学生的分数不同。
下面是查询使用CASE语句的SQL语句:
SELECT name, score,
CASE
WHEN score >= 60 THEN 'PASS'
ELSE 'FAIL'
END AS result
FROM students;
上述代码中,我们使用CASE语句根据学生的分数来返回不同的结果。如果学生的分数大于等于60,返回”PASS”,否则返回”FAIL”。这个CASE语句也会给返回结果起一个别名result。
上面的查询语句会返回如下结果:
+--------+-------+--------+
| name | score | result |
+--------+-------+--------+
| 小明 | 85.00| PASS |
| 小红 | 60.00| PASS |
| 小刚 | 75.00| PASS |
| 小李 | 95.00| PASS |
+--------+-------+--------+
结论
在MySQL中,我们可以使用TINYINT数据类型、枚举类型ENUM和CASE语句来展示TRUE和FALSE值。针对不同的业务需求,我们可以选择不同的方法。如果需要在代码中进行操作,则TINYINT和枚举类型ENUM会更加方便实现。如果只是简单的展示结果,则CASE语句更易于阅读和理解。
极客笔记