MySQL的CASE WHEN语句的几个使用实例

使用CASE WHEN进行字符串替换处理


代码如下:

mysql> select * from sales;

9 rows in set (0.01 sec)

SELECT name AS Name,
    CASE category
    WHEN "Holiday" THEN "Seasonal"
    WHEN "Profession" THEN "Bi_annual"
    WHEN "Literary" THEN "Random" END AS "Pattern"
FROM sales;

9 rows in set (0.00 sec)

CREATE TABLE sales(
    num MEDIUMINT NOT NULL AUTO_INCREMENT, name CHAR(20), winter INT, spring INT,
    summer INT, fall INT, category CHAR(13), primary key(num)
) ENGINE=MyISAM;

insert into sales value(1, 'Java', 1067 , 200, 150, 267,'Holiday');
insert into sales value(2, 'C',970,770,531,486,'Profession');
insert into sales value(3, 'JavaScript',53,13,21,856,'Literary');
insert into sales value(4, 'SQL',782,357,168,250,'Profession');
insert into sales value(5, 'Oracle',589,795,367,284,'Holiday');
insert into sales value(6, 'MySQL',953,582,336,489,'Literary');
insert into sales value(7, 'Cplus',752,657,259,478,'Literary');
insert into sales value(8, 'Python',67,23,83,543,'Holiday');
insert into sales value(9, 'PHP',673,48,625,52,'Profession');

简单语句


代码如下:

SELECT CASE WHEN 10*2=30 THEN '30 correct'
   WHEN 10*2=40 THEN '40 correct'
   ELSE 'Should be 10*2=20'
END AS `result`;

多重表达式


代码如下:

SELECT CASE 10*2
   WHEN 20 THEN '20 correct'
   WHEN 30 THEN '30 correct'
   WHEN 40 THEN '40 correct'
   ELSE 'No results'
END AS `result`;

在SELECT查询中使用CASE WHEN


代码如下:

CREATE TABLE DVDs (
   ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   Name VARCHAR(60) NOT NULL,
   NumDisks TINYINT NOT NULL DEFAULT 1,
   RatingID VARCHAR(4) NOT NULL,
   StatID CHAR(3) NOT NULL
) ENGINE=INNODB;
INSERT INTO DVDs (Name, NumDisks, RatingID, StatID)
VALUES ('Christmas', 1, 'NR', 's1'), ('Doc', 1, 'G',  's2'), ('Africa', 1, 'PG', 's1'), ('Falcon', 1, 'NR', 's2'),
       ('Amadeus', 1, 'PG', 's2'), ('Show', 2, 'NR', 's2'), ('View', 1, 'NR', 's1'), ('Mash', 2, 'R',  's2');
SELECT Name, RatingID AS Rating,
   CASE RatingID
      WHEN 'R' THEN 'Under 17 requires an adult.'
      WHEN 'X' THEN 'No one 17 and under.'
      WHEN 'NR' THEN 'Use discretion when renting.'
      ELSE 'OK to rent to minors.'
   END AS Policy
FROM DVDs
ORDER BY Name;

8 rows in set (0.01 sec)

(0)

相关推荐

  • mysql中IFNULL,IF,CASE的区别介绍

    假设有一数据表的状态字段设计为varchar类型,有以下值:NULL,pending,pending refund,refund,cancel. 我们知道查询状态为cancel的订单,SQL语句可以这样写:SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE o.status = 'cancel' SQL语句能查询出正确的数据,但是当我们想查询状态为非cancel的订单时,可能会出麻烦,

  • MySQL中使用case when 语句实现多条件查询的方法

    举例如下: 数据表为DemoTable,字段有id, condition1,condition2,condition3,condition4,condition5 要求是查询DemoTable中,condition1,condition2,condition3,condition4,condition5五个字段中符合任意两个或两个以上的条件的内容. 可使用case when来实现这个条件,需要嵌套子查询语句 sql语句代码示例如下: 复制代码 代码如下: SELECT * FROM DemoTa

  • MySQL 的CASE WHEN 语句使用说明

    mysql数据库中CASE WHEN语句. case when语句,用于计算条件列表并返回多个可能结果表达式之一. CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果. CASE 搜索函数计算一组布尔表达式以确定结果. 两种格式都支持可选的 ELSE 参数. 语法简单 CASE 函数: 复制代码 代码如下: CASE input_expression    WHEN when_expression THEN result_expression      

  • 详解Mysql case then使用

    表的创建 CREATE TABLE `lee` ( `id` int(10) NOT NULL AUTO_INCREMENT, `name` char(20) DEFAULT NULL, `birthday` datetime DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 数据插入: insert into lee(name,birthday) values ('sam','1990-01-01'); i

  • MySQL中的if和case语句使用总结

    Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 复制代码 代码如下: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3.IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定. 复制代码 代码如下: select *,if(sva=1,"男",&

  • sum(case when then)(判断男女生的个数)

    判断类似一个班级的男生和女生的人数,用sum (cese when then ) 复制代码 代码如下: select count(er.execute_result), sum(case er.execute_result when 1 then 1 else 0 end) completed, sum(case er.execute_result when 0 then 1 else 0 end) notCompleted from taw_wp_execute_result er ; 复制代

  • MYSQL中有关SUM字段按条件统计使用IF函数(case)问题

    今天群里有人问了个问题是这样的:  然后有群友是这样回答的 复制代码 代码如下: select name,sum(case when stype=4 then money*(-1) else money end ) as M from table group by name 我想了想,应该可以用IF函数 于是改了下 复制代码 代码如下: select name,sum(money*IF(stype=4,-1,1)) as M from table group by name 两种方式那种更效率还

  • sql学习之CASE WHEN THEN ELSE END的用法

    超强:SQL命令中的case...when...then...else...end条件查询(不同于where) 与 类型转换的用法 case...when...then...else...end,是在from前面,可以改变记录中某字段的值,不能决定是否显示该记录: where,是在from后面,不可以改变记录中某字段的值,但可以决定是否显示该记录. case...when...then...else...end,可用于对同一记录的多个字段求和,带分支判断. 另外,对字段判断和处理,往往需要强制类

  • SQL集合函数中case when then 使用技巧

    那么在集合函数中它有什么用呢 ? 假设数据库有一张表名为student的表. 如果现在要你根据这张表,查出江西省男女个数,广东省男生个数,浙江省男女个数 怎么写SQL语句?即要生成下结果表 答案是:select sex ,count ( case province when '广东省' then '广东省' end )as 广东省 ,count ( case province when '江西省' then '江西省' end )as 江西省 ,count ( case province whe

  • MySQL的CASE WHEN语句的几个使用实例

    使用CASE WHEN进行字符串替换处理 复制代码 代码如下: mysql> select * from sales; 9 rows in set (0.01 sec) SELECT name AS Name,    CASE category    WHEN "Holiday" THEN "Seasonal"    WHEN "Profession" THEN "Bi_annual"    WHEN "Lit

  • 关于case when语句的报错问题详解

    前言 在mysql数据库中,有时候我们会使用到类似if else的判断操作.那么mysql中怎么处理这种需求呢? mysql 判断操作一种语法: case ..when语句 但最近在使用的时候遇到了一个问题,下面话不多说了,来一起看看详细的介绍吧 直接说明问题.我有一张存储身份证号码的表id_card_message,表结构和数据如下(MySQL5.7.14): mysql> select * from id_card_message; +------+--------------------+

  • 详解shell脚本中的case条件语句介绍和使用案例

    #前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句.case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,case看起来更规范和易读 #case条件语句的语法格式 case "变量" in 值1) 指令1... ;; 值2) 指令2... ;; *) 指令3... esac #说明:当变量的值等于1时,那么就会相应的执行指令1的相关命令输出,值等于2时就执行指令2的命令,以此类推,如果都不符合的话

  • mysql中写判断语句的方法总结

    mysql中写判断语句的方法: 方法一.CASE函数 case函数语法: CASE condition WHEN value1 THEN returnvalue1 WHEN value2 THEN returnvalue2 WHEN value3 THEN returnvalue3 -- ELSE defaultvalue END 举例: SELECT username,(CASE sex WHEN 1 THEN '男' WHEN 2 THEN '女' ELSE '未知' END) as sex

  • MySQL中case when对NULL值判断的踩坑记录

    目录 前言 Mysql中case when语法: 案例实战: 总结: 前言 今天在开发程序中,从MySQL中提取数据的时候,使用到了case when的语法用来做判断,在使用过程中在判断NULL值的时候遇到个小问题 sql中的case when 有点类似于Java中的switch语句,比较灵活,但是在Mysql中对于Null的处理有点特殊 Mysql中case when语法: 语法1: CASE case_value WHEN when_value THEN statement_list [WH

  • MySQL高级进阶sql语句总结大全

    目录 SELECT DISTINCT WHERE ANDOR IN BETWEEN 通配符 LIke ORDERBY 函数 city表格 字符串函数 常用函数实例: concat substr trim region replace groupby having 别名 子查询 exists 表链接 使用子查询实现多表查询 createview union 交集值 无交集值 case 空值(null)和无值(’')的区别 正则表达式 存储过程 创建存储过程 存储过程的参数 查看存储过程 删除存储过

  • mysql sql语句性能调优简单实例

     mysql sql语句性能调优简单实例 在做服务器开发时,有时候对并发量有一定的要求,有时候影响速度的是某个sql语句,比如某个存储过程.现在假设服务器代码执行过程中,某个sql执行比较缓慢,那如何进行优化呢? 假如现在服务器代码执行如下sql存储过程特别缓慢: call sp_wplogin_register(1, 1, 1, '830000', '222222'); 可以按如下方法来进行调试: 1. 打开mysql profiling: 2. 然后执行需要调优的sql,我们这里执行两条sq

  • MySQL中使用SQL语句对字段进行重命名

    MySQL中,如何使用SQL语句来对表中某一个字段进行重命名呢?我们将使用alter table 这一SQL语句. 重命名字段的语法为:alter table <表名> change <字段名> <字段新名称> <字段的类型>. 现在我们来尝试把test表中的t_name字段重命名为t_name_new字段. 1.首先查看一下当前test表的结构 mysql> describe test; +------------+-------------+---

  • MySQL中使用SQL语句查看某个表的编码方法

    MySQL中,如何使用SQL语句来查看某个表的编码呢?我们使用show create table 这一SQL语句来解决这个问题. show create table可以查看创建这个表的SQL语句脚本,它的基本语法是: show create table <表名>; 我们用它看看test表的create脚本: mysql> show create table test; +-------+--------------------------------------------- -----

随机推荐