MySQL 操作符

MySQL 包含了大家在大多数语言中早已熟识的操作符,但是 C 风格的操作符(++, += 等等)并不被支持。

操作符经常是和 SET 语句一起来改变变量的值,和比较语句如 IF 或者 CASE,和循环控制表达式。

下面示例展示了一些在存储程序中使用操作符的简单例子:

CREATE PROCEDURE OPERATORS( )
BEGIN
   -- 声明变量
   DECLARE A INT DEFAULT 2;
   DECLARE B INT DEFAULT 3;
   DECLARE C FLOAT;
   
   -- 操作符计算,然后赋值给变量 C
   SET C=A+B; SELECT 'A+B=',C;
   SET C=A/B; SELECT 'A/B=',C;
   SET C=A*B; SELECT 'A*B=',C;

   -- IF 语句
   IF (A<B) THEN
       SELECT 'A 小于 B';
   END IF;
   
   -- IF 语句
   IF NOT (A=B) THEN
       SELECT 'A 不等于 B';
   END IF;
END;

数学操作符

MySQL 支持基本数学操作符:加(+),减(-),乘(*)和除(/)。

此外,MySQL 还支持两种与除法操作相关的操作符:整除(DIV)操作符返回除法操作的整数部分,而模操作符(%)返回整除后的余数部分。

下表给出了一个有关 MySQL 数学操作符的完整列表并给出了描述和用例:

MySQL 操作符

比较操作符

比较操作符比较两个值并返回 TRUE、FALSE 或 UNKNOWN,它们通常被使用在 IF,CASE,和循环控制表达式中。

下表总结了 MySQL 比较操作符:

MySQL 操作符

逻辑操作符

逻辑操作符操作三个逻辑值 TRUE,FALSE 和 NULL 并返回类似的这三个值。逻辑操作符通常被用来和比较操作符相结合创建除更为复杂的表达式。对于大多数逻辑操作符而言,如果其中任何值被比较得出为 NULL,那么最终的结果就为 NULL。

AND 操作符(逻辑与)

AND 操作符比较两个逻辑表达式,并且只在两个表达式都为真是才返回 TRUE。

下表展示了 AND 操作符所生成的可能值:

MySQL 操作符

上述表中,TRUE AND TRUE = TRUE,TRUE AND FALSE = FALSE,TRUE AND NULL = NULL ……

下面例子展示了如何使用 AND 操作符连接多个比较语句,根据输入的信息(性别,年龄,是否已婚)正确的返回称呼字符串:

-- 创建一个函数,返回一个字符串
CREATE FUNCTION f_title(
    in_gender CHAR(1),
    in_age INT, 
    in_marital_status VARCHAR(7)
)
RETURNS VARCHAR(6)
BEGIN
    -- 声明一个变量
    DECLARE title VARCHAR(6);
    
    -- IF语句
    -- 性别为女,且年龄小于 16 岁
    IF in_gender='F' AND in_age<16 THEN
        SET title='Miss';
    -- 性别为女,且年龄大于等于 16 岁,且已婚
    ELSEIF in_gender='F' AND in_age>=16 AND in_marital_status='Married' THEN
        SET title='Mrs';
    -- 性别为女,且年龄大于等于 16 岁,且未婚
    ELSEIF in_gender='F' AND in_age>=16 AND in_marital_status='Single' THEN
        SET title='Ms';
    -- 性别为男,且年龄小于16岁
    ELSEIF in_gender='M' AND in_age<16 THEN
        SET title='Master';
    -- 性别为男,且年龄大于等于 16 岁
    ELSEIF in_gender='M' AND in_age>=16 THEN
        SET title='Mr';
    END IF;
    
    -- 返回数据
    RETURN(title);
END;

使用如下语句调用函数:

-- 女孩
mysql> select f_title('F', 12, 'Married');
+-----------------------------+
| f_title('F', 12, 'Married') |
+-----------------------------+
| Miss                        |
+-----------------------------+
1 row in set (0.02 sec)

-- 单身男性
mysql> select f_title('M', 22, 'Single');
+----------------------------+
| f_title('M', 22, 'Single') |
+----------------------------+
| Mr                         |
+----------------------------+
1 row in set (0.02 sec)

OR 操作符(逻辑或)

OR 操作符比对两个逻辑表达式,并且只要其中的一个表达式为真即返回 TRUE。

下表展示了 OR 操作符所生成的可能值:

MySQL 操作符

XOR 操作符(逻辑异或)

XOR 操作符只有在两个值不相等时才返回 TRUE。

下表展示了 XOR 表达式的可能值:

MySQL 操作符

位操作符

位操作符主要是对二进制值进行操作。

下表列出了位操作符:

MySQL 操作符

位操作符类似于逻辑操作符,它们的操作对象是二进制的位。

例如:5|2=7,详细过程如下:

5 的二进制为 101
2 的二进制为 010
101
010  |
--------------
111 (7 的二进制表示)

例如:5&6=4,详细过程如下:

5 的二进制为 101
6 的二进制为 110
101
110  &
--------------
100  (4 的二进制表示)
说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号