MySQL 中存在一种名为 CASE 的语句,其作用相当于 IF 函数,能够增强代码的可理解性,同时提升执行效率。
CASE 表达式存在两种类型:基础型和可检索型。基础型 CASE 表达式主要用于判断某个表达式的取值是否与若干个特定的值相吻合。
简单的 CASE 语句的语法:
CASE <表达式> WHEN <值1> THEN <操作> WHEN <值2> THEN <操作> ... ELSE <操作> END CASE;
涉及任何有效公式时,会将该公式的结果,同每一个 WHEN 条件下的值进行对照,比如某个值,或是另一个值。当公式结果与某个 WHEN 条件下的值相符,就会运行该条件分支里的操作。如果所有 WHEN 条件都不符合,那么 ELSE 部分的操作会被启动。ELSE 部分并非必须存在。若省略了另一个分支,并且查询不到相应数据,MySQL系统会产生异常提示。
【实例 1】运用 CASE 语句依据条件判定值来输出对应结果,输入的 SQL 命令及运行后的数据如下
mysql查询当前日期是星期几,若是周日则返回日,若是周一则返回一,若是周二则返回二,以此类推,根据不同天数返回对应的星期名称 若是数字等于二,就是星期三,若是数字等于三,就是星期四,若是数字等于四,就是星期五,若是数字等于五,就是星期六 其余为周日,当前时间,今日星期几,今天星期几。 这个长句可以分成几个部分来表达,各个部分之间用逗号隔开,这样更清晰易懂,同时也能避免使用原文中已经出现过的词汇,保持语言的新鲜感。每个分句都尽量简洁明了,但又能准确传达原意,整体上更加流畅自然。 | COLUMN1 | 当前时间 | 当前时间星期几 | 当前时间星期几的名称 | +---------+---------------------+----------------+----------------+ 星期四,2019年2月28日13时45分43秒,数量为三,对应英文为Thursday。 +---------+---------------------+----------------+----------------+ 一条记录被检索到,同时产生了七条提醒信息,整个过程耗时零点零零秒
根据实际操作结果分析,当前系统时间被 NOW() 函数识别为 2019 年 2 月 28 日,而单独使用 NOW() 则显示当天无特定值,(NOW()) 函数返回的当前工作日序号为 3,这表明当天是星期四,可搜索的 CASE 表达式类型中,基础 CASE 语句仅能将表达式结果与若干预设值进行比对。完成更高级别的匹配任务时,比如处理区间条件,可以运用可检索的判断表达式。这种判断表达式在功能上等同于条件判断语句,不过其编写方式更为清晰易懂。
可搜索CASE语句的语法:
CASE
WHEN <条件1> THEN <命令>
WHEN <条件2> THEN <命令>
...
ELSE commands
END CASE;
MySQL 依次判断 WHEN 子句里各项条件,一旦某项成立就运行其后的 THEN 部分。倘若所有条件都不成立,就处理 ELSE 部分的内容。如果没有设定 ELSE 部分,而所有条件均未满足,MySQL 会报错提示。MySQL 不支持在 THEN 或 ELSE 后面放置空操作。如果希望 ELSE 部分不执行任何动作,同时避免 MySQL 报错,可以在该部分加入空的 BEGIN 和 END 语句。
【实例 2】运用 CASE 语句依据条件值给出对应结果,输入 SQL 命令及运行后产生的数据如下
mysql查询当前日期,若该日为周日,则结果显示为星期一,若是周一,则结果显示为星期二,依此类推,直到周六对应星期日。 N 为星期二时显示星期三,N 为星期三时显示星期四 四当天是周五就是星期五,四当天是周六就是星期六 当今天为周六时显示为星期天,否则显示当前日期,同时显示当前日期,显示当前是周几,显示当前日期是星期几 )); +---------+---------------------+----------------+----------------+ | COLUMN1 | NOW() | WEEKDAY(NOW()) | DAYNAME(NOW()) | +---------+---------------------+----------------+----------------+ 星期四,2019年2月28日14时08分,记录了三个数据,对应的英文是Thursday。 +---------+---------------------+----------------+----------------+ 1 row in set, 7 warnings (0.00 sec)
这个例子和前一个例子得到相同的结果,只是 CASE 函数的写法不同,WHEN 后面跟的是计算式,当计算式的值为真时取 THEN 后面的值,如果都不满足,就取 ELSE 后面的值。
扫一扫在手机端查看
- 上一篇:CentOS7.3安装MySQL8.0配置my.cnf_MySQL8.0安装脱坑指南,win10+CentOS7.3
- 下一篇:Wagtail开源内容管理系统_基于 Django 框架的Python 内容管理系统(CMS)Wagtail的安装使用
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1