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 数学操作符的完整列表并给出了描述和用例:
比较操作符比较两个值并返回 TRUE、FALSE 或 UNKNOWN,它们通常被使用在 IF,CASE,和循环控制表达式中。
下表总结了 MySQL 比较操作符:
逻辑操作符操作三个逻辑值 TRUE,FALSE 和 NULL 并返回类似的这三个值。逻辑操作符通常被用来和比较操作符相结合创建除更为复杂的表达式。对于大多数逻辑操作符而言,如果其中任何值被比较得出为 NULL,那么最终的结果就为 NULL。
AND 操作符比较两个逻辑表达式,并且只在两个表达式都为真是才返回 TRUE。
下表展示了 AND 操作符所生成的可能值:
上述表中,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 操作符比对两个逻辑表达式,并且只要其中的一个表达式为真即返回 TRUE。
下表展示了 OR 操作符所生成的可能值:
XOR 操作符只有在两个值不相等时才返回 TRUE。
下表展示了 XOR 表达式的可能值:
位操作符主要是对二进制值进行操作。
下表列出了位操作符:
位操作符类似于逻辑操作符,它们的操作对象是二进制的位。
例如:5|2=7,详细过程如下:
5 的二进制为 101 2 的二进制为 010 101 010 | -------------- 111 (7 的二进制表示)
例如:5&6=4,详细过程如下:
5 的二进制为 101 6 的二进制为 110 101 110 & -------------- 100 (4 的二进制表示)