前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL CASE函数

MySQL CASE函数

原创
作者头像
Power
发布2025-03-05 11:32:05
发布2025-03-05 11:32:05
2000
代码可运行
举报
运行总次数:0
代码可运行

说明

MySQL CASE函数是MySQL流程控制函数的一种,上面两种语法分别对应两种不同的方式:第一种语法返回第一个value=compare_valuetrue的结果。第二种语法返回第一个conditiontrue的结果。如果没有比较或条件为真,则返回ELSE之后的结果,如果没有ELSE部分,则返回NULL。

CASE表达式的返回类型是所有结果值的聚合类型:

  • 如果所有类型都是数字,则聚合类型也是数字:
    • 如果至少一个参数是双精度,则结果是双精度。
    • 否则,如果至少有一个参数是 DECIMAL,则结果是 DECIMAL
    • 否则,结果是整数类型(有一个例外):
      • 如果所有整数类型都是有符号的或都是无符号的,则结果是相同的符号并且精度是所有指定整数类型(即TINYINTSMALLINTMEDIUMINTINT或者BIGINT) 中最高的。
      • 如果是有符号和无符号整数类型的组合,结果是有符号的,精度可能更高。例如,如果类型分别为有符号的INT和 无符号 INT,则结果为有符号的 BIGINT
      • 例外的情况是无符号的 BIGINT,与任何有符号的整数类型相结合。结果 都是具有足够的精度和小数位数 0 的DECIMAL
  • 如果所有类型都是BIT,则结果是BIT。否则BIT参数的处理方式类似于BIGINT
  • 如果所有类型都是YEAR,则结果是YEAR。否则 YEAR参数的处理方式类似于 INT
  • 如果所有类型都是字符串(CHAR或 VARCHAR),则结果是VARCHAR,最大长度由操作数的最长字符长度决定。
  • 如果所有类型都是字符或二进制字符串,则结果为 VARBINARY.
  • SETENUM的处理与VARCHAR类似,结果是VARCHAR
  • 如果所有类型都是JSON,则结果是JSON
  • 如果所有类型都是时间型的,则结果是时间型的:
    • 如果所有时间类型均为 DATE、 TIME或 TIMESTAMP,则结果分别为DATE、 TIME或 TIMESTAMP
    • 否则,如果是时间类型的混合,结果是 DATETIME.
  • 如果所有类型都是GEOMETRY,则结果是GEOMETRY
  • 如果任何类型是BLOB,则结果是BLOB
  • 对于所有其他类型组合,结果为 VARCHAR
  • NULL类型聚合忽略 文字操作数。

示例

代码语言:javascript
代码运行次数:0
复制
mysql> SELECT CASE url WHEN 'www.02405.com' THEN '零五网' WHEN 'www.duanpianmi.com' THEN '短篇迷' ELSE '位置网站' END;
代码语言:javascript
代码运行次数:0
复制
mysql> SELECT CASE WHEN score >= 85 THEN '优秀' WHEN score >= 60 and score < 85 THEN '及格' ELSE '差' END;

注意

在MySQL中还存在着同名的CASE流程控制语句,与本文讲解的CASE函数不同CASE流程控制语句应用于存储过程,并且不包含ELSE NULL子句,并且用END CASE而不是END来结束。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
LV.
这个人很懒,什么都没有留下~
目录
  • 说明
  • 示例
  • 注意
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档