MySQL 中,表达式是字面量、变量和操作符的集合,用以计算出某些需要的值。
MySQL 支持多种类型的表达式,包括算术表达式、字符串表达式、逻辑表达式等。
以下是一些常见的 MySQL 表达式示例:
算术表达式,例如:
-- 用于进行数学运算 2 + 3、5 * (4 - 2)
字符串表达式,例如:
-- 用于连接字符串 concat('Hello, ', name)
逻辑表达式,例如:
-- 用于判断条件是否成立 age > 18
条件表达式,例如:
-- 根据条件返回不同的值 IF(condition, true_value, false_value)
NULL 检查表达式,例如:
-- 用于检查值是否为空 IS NULL IS NOT NULL
CASE 表达式,例如:
-- 根据条件返回不同的结果 CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ELSE result3 END
MySQL 中表达式可以在 MySQL 查询中的不同地方使用,例如:
(1)SELECT 语句的列列表
mysql> select id, upper(`name`) as new_name from `user`; +----+----------+ | id | new_name | +----+----------+ | 1 | TOM | | 2 | HELEN | | 3 | JEMO | | 4 | BILL | +----+----------+ 4 rows in set (0.03 sec)
(2)WHERE 子句
mysql> select id, upper(`name`) as new_name from `user` where upper(substring(`name`, 1, 1))='B'; +----+----------+ | id | new_name | +----+----------+ | 4 | BILL | +----+----------+ 1 row in set (0.03 sec)
(3)ORDER BY 子句
mysql> select id, upper(`name`) as new_name from `user` order by upper(substring(`name`, 3, 1)) asc; +----+----------+ | id | new_name | +----+----------+ | 2 | HELEN | | 4 | BILL | | 1 | TOM | | 3 | JEMO | +----+----------+ 4 rows in set (0.05 sec)
存储过程和函数中也可以使用表达式,例如:
-- 创建一个函数,返回一个字符串 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;