`

mysql 语句case when

阅读更多
表的创建



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');

insert into lee(name,birthday) values ('lee','1980-01-01');

insert into lee(name,birthday) values ('john','1985-01-01');



使用case when语句

1。

select name,
case
        when birthday<'1981' then 'old'
        when birthday>'1988' then 'yong'
        else 'ok' END YORN
from lee;





2。

select NAME,
case name
     when 'sam' then 'yong'
        when 'lee' then 'handsome'
        else 'good' end
from lee;



当然了case when语句还可以复合

3。

select name,birthday,
case
     when birthday>'1983' then 'yong'
        when name='lee' then 'handsome'
        else 'just so so ' end
from lee;

 

在这里用sql语句进行日期比较的话,需要对年加引号。要不然可能结果可能和预期的结果会不同。我的mysql版本5.1

当然也可以用year函数来实现,以第一个sql为例

select NAME,
CASE
     when year(birthday)>1988 then 'yong'
        when year(birthday)<1980 then 'old'
        else 'ok' END
from lee;



create table penalties
(
paymentno INTEGER not NULL,
    payment_date DATE not null,
    amount DECIMAL(7,2) not null,
    primary key(paymentno)
)

insert into penalties values(1,'2008-01-01',3.45);
insert into penalties values(2,'2009-01-01',50.45);
insert into penalties values(3,'2008-07-01',80.45);


1.#对罚款登记分为三类,第一类low,包括大于0小于等于40的罚款,第二类moderate大于40
#到80之间的罚款,第三类high包含所有大于80的罚款。

2.#统计出属于low的罚款编号。



第一道题的解法与上面的相同
select paymentno,amount,
case
     when amount>0 and amount<=40 then 'low'
        when amount>40 and amount<=80 then 'moderate'
        when amount>80 then 'high'
        else 'incorrect' end lvl
from `penalties`

2.#统计出属于low的罚款编号。重点看这里的解决方法
方法1.
select paymentno,amount
from `penalties`
where case
when amount>0 and  amount<=40 then 'low'
    when amount>40 and amount<=80 then 'moderate'
    when amount>80 then 'high'
    else 'incorrect' end ='low';

方法2
select *
from (select paymentno,amount,
case
     when amount>0 and amount<=40 then 'low'
        when amount>40 and amount<=80 then 'moderate'
        when amount>80 then 'high'
        else 'incorrect' end lvl
from `penalties`) as p
where p.lvl='low';
分享到:
评论

相关推荐

    case when和sum case when 写法及拼接字段

    ### Case When 用法 在 SQL 查询语言中,`CASE WHEN` 结构是一种非常有用的工具,可以用来根据条件返回不同的值。它的工作原理类似于编程语言中的 `if...else` 语句,但在 SQL 中用于创建动态列或进行复杂的条件...

    详细解析 mysql 中的 case when 语句的使用

    ### MySQL中的Case When语句详解 #### 一、引言 在MySQL中,`CASE WHEN`语句是一种非常有用的控制流程语句,它允许开发者根据不同的条件返回不同的结果。这在处理复杂的数据筛选和聚合任务时特别有用。本文将详细...

    case乱码解决

    mysql 中case when 遇到乱码解决。查询语句中含有case引起中文乱码解决方法

    MySQL 的CASE WHEN 语句使用说明

    MySQL中的CASE WHEN语句是一种非常强大的条件控制工具,它允许你在SQL查询中根据不同的条件返回不同的结果。CASE语句在数据库处理中起到了类似编程语言中条件判断的作用,使得你可以更灵活地处理数据。 简单CASE...

    MySQL数据库:流程控制语句case.pptx

    流程控制语句CASE 课程目标 1)理解 —— CASE语句的语法规则; 2)掌握 —— CASE语句的使用方法; case语句 CASE语句语法格式为: 第一种: CASE case_value WHEN when_value THEN statement_list [WHEN when_...

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

    MySQL的CASE WHEN语句是一种非常强大的条件控制工具,它允许你在SQL查询中实现复杂的逻辑判断。CASE WHEN语句常用于数据转换、分类或者基于特定条件返回不同的值。在这个实例中,我们将深入理解如何使用CASE WHEN,...

    MySQL性能优化的最佳21条经验

    6. **存储过程和预编译语句**:存储过程可以减少网络传输,预编译语句能提高执行效率,避免解析SQL的开销。 7. **定期分析与维护**:使用ANALYZE TABLE更新统计信息,OPTIMIZE TABLE整理碎片,保持表的健康状态。 ...

    mysql存储过程之case语句用法实例详解

    MySQL中的CASE语句是SQL语言中的一个重要组成部分,它在存储过程和复杂查询中扮演着条件判断的角色,使得代码更加简洁易读。CASE语句提供了两种形式:简单CASE和可搜索CASE。 1. 简单CASE语句: 简单CASE语句主要...

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

    在MySQL数据库中,`CASE WHEN` 语句是一种强大的条件表达式,用于在查询中进行复杂的逻辑判断。本文将深入探讨如何使用`CASE WHEN`语句实现多条件查询,特别是针对给定的示例场景。 首先,让我们了解`CASE WHEN`的...

    MySQL 中CASE-WHEN 的应用.pdf

    为了统计每个调查对象对每个问题的得分,我们需要使用GROUP BY语句按问题分组,然后利用CASE-WHEN处理复杂的统计逻辑。 2. CASE-WHEN的实现方案 CASE-WHEN有两种基本形式:简单CASE和搜索CASE。 2.1 简单CASE...

    MySQL排序中使用CASE WHEN的方法示例

    `CASE WHEN` 是一个非常强大的工具,它允许我们在SQL语句中进行条件判断,根据不同的条件返回不同的结果。在MySQL中,我们可以利用`CASE WHEN`来实现自定义排序,以满足特定的业务需求。以下是一个关于如何在MySQL...

    mysql语句集合包括模糊查询索引函数

    MySQL提供了丰富的内置函数,包括算术函数(如SUM、AVG)、字符串函数(如CONCAT、SUBSTRING)、日期/时间函数(如DATE_ADD、NOW)、逻辑函数(如IF、CASE WHEN)等。这些函数极大地增强了SQL语句的功能性和灵活性,...

    SqlServer使用 case when 解决多条件模糊查询问题

    在SQL Server中,`CASE WHEN` 语句是一种强大的逻辑表达式,用于处理基于不同条件的复杂查询。在多条件模糊查询中,`CASE WHEN` 可以避免在程序端或数据库端拼接SQL字符串,从而减少代码量,提高安全性,并避免SQL...

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

    Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用: IF表达式 代码如下: IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 &lt;&gt; 0 and expr1 &lt;&gt; NULL),则 IF()的...

Global site tag (gtag.js) - Google Analytics