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

使用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)

时间: 2024-11-05 12:20:31

MySQL的CASE WHEN语句的几个使用实例_Mysql的相关文章

MySQL 的CASE WHEN 语句使用说明_Mysql

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

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

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

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

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

MySQL中case when 语句条件查询的方法

case 计算条件列表并返回多个可能结果表达式之一. case 具有两种格式: 简单 case 函数将某个表达式与一组简单表达式进行比较以确定结果. case 搜索函数计算一组布尔表达式以确定结果. 两种格式都支持可选的 else 参数. 语法 简单 case 函数: case input_expression     when when_expression then result_expression         [ ...n ]     [         else else_resu

mysql中case 和if的用法

问题描述 mysql中case 和if的用法 这是我想要写的,但是case when里面是不是只能写一个条件?我想要两个条件去判断,返回一列.用if怎么写呢? 解决方案 不是,你这样写就是可以的. 解决方案二: 可以用when and,最好用括号括起来,然后就是检查你的判断条件是否正确 SELECT table1.id, table1.name, CASE WHEN (table1.event = 'r' AND table1.name='Jones') THEN 'very high' WHE

mysql case...when语句的几个用法

mysql case...when语句的几个用法 一般情况下,case ...when都用在select语句中,不过可以在其他子句中使用 1 在order by子句中进行自定义排序 Sql代码 show create table 20130225t1; CREATE TABLE `20130225t1` ( `id` tinyint(4) NOT NULL AUTO_INCREMENT, `b` char(1) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=Inno

mysql数据库case语句的使用方法

表A:如图 表B:如图     想输出master_id下的status=6的order数量,想要输出的结果如下图:   一开始所采取的语句是:select count(a.order_id) from a left join b on a.order_id=b.order_id where b.status=6 group by a.master_id ,发现,当status=6的这条数据不存在是查询的结果就是空,并不是像想象中返回0. 用case语句就可以很好的解决这个问题:  代码如下 复

mysql的查询sql语句转换成oracle的sql

问题描述 mysql的查询sql语句转换成oracle的sql SELECT CREATE_DATE SUM(ISBIND) AS ISBIND SUM(UNBIND) AS UNBIND SUM(SUBSCRIBE) AS SUBSCRIBE SUM(UNSUBSCRIBE) AS UNSUBSCRIBE FROM ( SELECT N.CREATE_DATE MAX( CASE N.EVENT WHEN 'subscribe' THEN COUNT ELSE 0 END ) SUBSCRIB

详解MySQL数据库之更新语句

用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的 SELECT语句,另外一种就是更新语句,也叫做数据操作语句.言外之 意,就是对数据进行修改.在标准的SQL中有3个语句,它们是INSERT.UPDATE以及DELETE.在MySQL中又多了一个REPLACE语句,因此,本文以MySQL为背景来讨论如何使有SQL中的更新语句. 一.INSERT和REPLACE INSERT和REPLACE语句的功能都是向表中插入新的数据.这两条语句的语法类似.它们的主要区别是如何处理重复的数据