MySQL CASE函数是MySQL流程控制函数的一种,上面两种语法分别对应两种不同的方式:第一种语法返回第一个value=compare_value
为true
的结果。第二种语法返回第一个condition
为true
的结果。如果没有比较或条件为真,则返回ELSE之后的结果,如果没有ELSE部分,则返回NULL。
CASE
表达式的返回类型是所有结果值的聚合类型:
DECIMAL
,则结果是 DECIMAL
。TINYINT
、SMALLINT
、MEDIUMINT
、INT
或者BIGINT
) 中最高的。INT
和 无符号 INT
,则结果为有符号的 BIGINT
。BIGINT
,与任何有符号的整数类型相结合。结果 都是具有足够的精度和小数位数 0 的DECIMAL
。BIT
,则结果是BIT
。否则BIT
参数的处理方式类似于BIGINT
。YEAR
,则结果是YEAR
。否则 YEAR
参数的处理方式类似于 INT
。CHAR
或 VARCHAR
),则结果是VARCHAR
,最大长度由操作数的最长字符长度决定。VARBINARY
.SET
和ENUM
的处理与VARCHAR
类似,结果是VARCHAR
。JSON
,则结果是JSON
。DATE
、 TIME
或 TIMESTAMP
,则结果分别为DATE
、 TIME
或 TIMESTAMP
。DATETIME
.GEOMETRY
,则结果是GEOMETRY
。BLOB
,则结果是BLOB
。VARCHAR
。NULL
类型聚合忽略 文字操作数。mysql> SELECT CASE url WHEN 'www.02405.com' THEN '零五网' WHEN 'www.duanpianmi.com' THEN '短篇迷' ELSE '位置网站' END;
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 删除。