MySQL 表达式

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;
说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号