SQL BOOLEAN (BIT)运算符

SQL BOOLEAN (BIT)运算符

布尔型(Boolean)是一种通用的数据类型,用于存储真或假的值。它在我们在表的某一列中定义变量时使用。

例如,一个客户想要获取所有 “红色” 的汽车清单。因此,我们可以使用布尔型运算符如下表所示来找到这些汽车-

SQL BOOLEAN (BIT)运算符

在这里,“IS_RED”是一个BOOLEAN列,根据车辆的颜色返回TRUE或FALSE值。

SQL中的布尔类型

SQL没有布尔数据类型(作为关键字)。相反,它提供了BIT数据类型。BIT数据类型是接受值0、1和NULL的整数值。

  • 值0表示FALSE,值1表示TRUE。

  • 我们还可以使用bit数据类型存储NULL值。

  • BIT数据类型的范围是1到64。这意味着SQL BOOLEAN仅需要一个比特位来存储值。

像PostgreSQL和PL/SQL这样的数据库提供了布尔数据类型,缩写为BOOL。而像MySQL和Oracle SQL这样的数据库没有布尔数据类型。为了表示布尔值,它们分别提供了TINYINT和BIT数据类型。

语法

以下是SQL BIT数据类型的基本语法-

CREATE TABLE table_name (
   column name BIT, column2 datatype, column 3 datatype …
);

示例

在以下查询中,我们正在创建一个名为“CUSTOMERS”的表,其中包含三列,分别是“ID”,“NAME”和“AVAILABLITY”。

“AVAILABILITY”列表示客户是否可用。如果客户不可用,则存储位值0(FALSE),如果客户可用,则存储位值1(TRUE)。

CREATE TABLE CUSTOMERS(
   ID INT NOT NULL,
   NAME VARCHAR(150),
   AVAILABILITY BIT
);

结果

执行上述查询的结果如下 –

Commands completed successfully.

验证

可以通过使用SELECT语句检索表的内容来验证更改是否反映在表中。以下是显示Customers表中记录的查询语句-

select * from customers;

表格显示如下-

+-----+------+--------------+
| ID  | NAME | AVAILABILITY |
+-----+------+--------------+

使用SQL BIT数据类型插入数据

一旦您创建了一个具有布尔数据类型的表列,您需要将0、1或NULL作为值传递给它。如果具有BIT数据类型的列的值不是这3个值之一,则会生成错误。

示例

在下面的查询中,我们尝试向上面创建的CUSTOMERS表中插入数据-

INSERT INTO CUSTOMERS(ID, NAME, AVAILABILITY) VALUES (1, 'Ramesh', 0);
INSERT INTO CUSTOMERS(ID, NAME, AVAILABILITY) VALUES (2, 'Khilan', 1);
INSERT INTO CUSTOMERS(ID, NAME, AVAILABILITY) VALUES (4, 'Kaushik', NULL);

输出

以下是所获得的结果−

(1 row affected)
(1 row affected)
(1 row affected)

验证

SELECT语句用于打印指定表格的内容。为了验证更改是否在CUSTOMERS表格中反映出来,我们可以使用以下语句进行验证:

SELECT ID, NAME, AVAILABILITY
FROM CUSTOMERS;

表格显示如下 –

+-----+----------+--------------------+
| ID  | NAME     | AVAILABILITY       |
+-----+----------+--------------------+
|   1 | Ramesh   | 0                  |
|   2 | Khilan   | 1                  |
|   4 | kaushik  | NULL               |
+-----+----------+--------------------+

将BIT 0,1替换为TRUE和FALSE

如上所述,BIT数据类型显示0和1的值,而不是TRUE和FALSE。在SQL中,我们可以使用CASE语句将BIT数据类型转换为TRUE和FALSE。

SQL CASE 语句是一种条件语句,它可以帮助我们根据特定条件做出决策。它评估一组条件,并在满足相应条件时返回结果。

语法

以下是CASE语句的基本语法:

CASE
   WHEN condition1 THEN value1
   WHEN condition2 THEN value2
   ...
   ELSE default_value
END

示例

为了更好地理解,让我们考虑包含汽车制造商、类型、传输方式和颜色等详细信息的CARS表,如下所示:

CREATE TABLE CARS (
   MANUFACTURER VARCHAR(20) NOT NULL,
   TYPE VARCHAR(20) NOT NULL,
   TRANSMISSION VARCHAR(20) NOT NULL,
   COLOR VARCHAR(20),
   IS_RED BIT
);

现在,使用以下INSERT语句将值插入到这个表中−

INSERT INTO CARS VALUES ('Toyota', 'SUV', 'Automatic', 'Red', 1);
INSERT INTO CARS VALUES ('Honda', 'Hatchback', 'Manual', 'Grey', 0);
INSERT INTO CARS VALUES ('Mercedes', 'Sedan', 'Automatic', 'Red', 1);
INSERT INTO CARS VALUES ('Tata', 'Truck', 'Manual', 'Blue', 0);
INSERT INTO CARS VALUES ('Ford', 'Minivan', 'Manual', 'Red', 1);

表将被创建为 –

+--------------+-----------+--------------+-------+--------+
| MANUFACTURER | TYPE      | TRANSMISSION | COLOR | IS_RED |
+--------------+-----------+--------------+-------+--------+
| Toyota       | SUV       | Automatic    | Red   | 1      |
| Honda        | Hatchback | Manual       | Grey  | 0      |
| Mercedes     | Sedan     | Automatic    | Red   | 1      |
| Tata         | Truck     | Manual       | Blue  | 0      |
| Ford         | Minivan   | Manual       | Red   | 1      |
+--------------+-----------+--------------+-------+--------+

现在,让我们尝试显示CARS表中颜色为红色的所有汽车,用TRUE表示;否则用FALSE表示(布尔值)−

SELECT *,
   CASE IS_RED
      WHEN 1 THEN 'TRUE'
      WHEN 0 THEN 'FALSE'
   END AS IS_RED_BOOLEAN
FROM CARS;

输出

以下是产生的结果−

+--------------+-----------+--------------+-------+--------+----------------+
| MANUFACTURER | TYPE      | TRANSMISSION | COLOR | IS_RED | IS_RED_BOOLEAN |
+--------------+-----------+--------------+-------+--------+----------------+
| Toyota       | SUV       | Automatic    | Red   | 1      | TRUE           |
| Honda        | Hatchback | Manual       | Grey  | 0      | FALSE          |
| Mercedes     | Sedan     | Automatic    | Red   | 1      | TRUE           |
| Tata         | Truck     | Manual       | Blue  | 0      | FALSE          |
| Ford         | Minivan   | Manual       | Red   | 1      | TRUE           |
+--------------+-----------+--------------+-------+--------+----------------+

使用存储过程的BIT数据类型

我们也可以在SQL Server中的存储过程中使用BIT数据类型。存储过程是一组可以多次执行的SQL语句。

存储过程使用BIT参数来确定是否执行某个动作。在使用位类型值(或任何其他数据类型)之前,我们需要先声明这个类型的变量,然后将其用作参数。

语法

以下是接受BIT参数的存储过程的基本语法 –

CREATE PROCEDURE my_Procedure
   @myBit BIT
AS
BEGIN
   IF @myBit = 1
   BEGIN
      -- do something if @myBit is true
   END
   ELSE
   BEGIN
      -- do something if @myBit is false
   END
END

在这里,存储过程接受一个名为 @myBit 的BIT类型参数。然后,它使用IF语句验证 @myBit 的值,并根据其是真还是假执行不同的操作。

示例

在以下查询中,我们尝试创建一个名为 REDFlag 的存储过程,根据 @REDFlag 变量的值获取CARS表的详细信息。

create procedure REDFlag
(
   @REDFlag bit
)
as
select * from CARS
where IS_RED = @REDFlag

输出

在执行上述查询时,我们得到以下输出结果:

Commands completed successfully.

验证

创建存储过程成功后,我们需要使用Exec子句来执行它。由于它期望一个类型为BIT的输入值,我们传递了1(对于color = RED为TRUE)。

exec REDFlag 1

输出

执行上述查询后,我们得到以下输出。它显示了红色汽车的列表。

+--------------+-----------+--------------+-------+--------+
| MANUFACTURER | TYPE      | TRANSMISSION | COLOR | IS_RED |
+--------------+-----------+--------------+-------+--------+
| Toyota       | SUV       | Automatic    | Red   | 1      |
| Mercedes     | Sedan     | Automatic    | Red   | 1      |
| Ford         | Minivan   | Manual       | Red   | 1      |
+--------------+-----------+--------------+-------+--------+

验证

如果我们需要获取颜色不是红色的汽车列表,我们只需要调用上面创建的过程,并通过传递0来实现-

exec REDFlag 0

输出

以下是产生的结果−

+--------------+-----------+--------------+-------+--------+
| MANUFACTURER | TYPE      | TRANSMISSION | COLOR | IS_RED |
+--------------+-----------+--------------+-------+--------+
| Honda        | Hatchback | Manual       | Grey  | 0      |
| Tata         | Truck     | Manual       | Blue  | 0      |
+--------------+-----------+--------------+-------+--------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程