`
thinkerAndThinker
  • 浏览: 284792 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

select case when的一些用法

 
阅读更多

概述:
sql语句中的case语句与高级语言中的switch语句,是标准sql的语法,适用于一个条件判断有多

种值的情况下分别执行不同的操作。


首先,让我们看一下CASE的语法。在一般的SELECT中,其语法格式如下:
SELECT <myColumnSpec> =
CASE <单值表达式>
       when <表达式值> then <SQL语句或者返回值>
       when <表达式值> then <SQL语句或者返回值>
       ...
       when <表达式值> then <SQL语句或者返回值>
END

例子(引用):
第一组: 查询dj_zt表状态为'07'或'11'、qylx_dm = '03'的所有记录数。
A:用CASE语句
select count(case a.zt when '07' then a.bs end)+
    count(case a.zt when '11' then a.bs end)
from dj_zt a
where a.qylx_dm = '03'
----------------
11829

B:不用CASE语句
select count(*)
from dj_zt a
where a.qylx_dm = '03'
   and a.zt in ('07', '11')
----------------
11829

结果:A、B两组耗费的代价一样的,相比B的写法简洁,平局。

第二组: 分别查询dj_zt表状态为'07'和'11'且qylx_dm = '03'的所有记录数。
A:用CASE语句
select count(case a.zt when '07' then a.bs end),
    count(case a.zt when '11' then a.bs end)
from dj_zt a
where a.qylx_dm = '03
----------------
4565 7264

B:不用CASE语句(写了两条语句,扫描表两遍,效率明显低下)
select count(*)
from dj_zt a
where a.qylx_dm = '03'
   and a.zt='07'
----------------
4565

select count(*)
from dj_zt a
where a.qylx_dm = '03'
   and a.zt='11'
----------------
7264

结果:B组代价明显高出A组很多,执行的效率比较低。

CASE和IF的区别:
在高级语言中,CASE的可以用IF来替代,但是在SQL中不行。
CASE是SQL标准定义的,IF是数据库系统的扩展。
CASE可以用于SQL语句和SQL存储过程、触发器,IF只能用于存储过程和触发器。
在SQL过程和触发器中,用IF替代CASE代价都相当的高,相当的麻烦,难以实现。


总结: 通过上面两组实例可以看出,应用CASE语句可以让SQL变得简洁高效,从而大大提高了执行效率。而且,CASE的使用一般不会引起性能(相比没有用CASE的语句)低下,反而增加了操作的灵活性

select atid,userid,title,releasedate,ForumId,clicks,istoday = (
case Convert(varchar(10), releasedate,120)
when Convert(varchar(10), getdate(),120)
then releasedate
end),BBSSetTop from Tab_ArticleTopics where ForumId<>0 and status in(1,5)
order by BBSSetTop desc, istoday desc,clicks desc

===========================================
有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):
   大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。
       显示格式:
       语文              数学                英语
       及格              优秀                不及格   
------------------------------------------
select
(case when 语文>=80 then '优秀'
        when 语文>=60 then '及格'
else '不及格') as 语文,
(case when 数学>=80 then '优秀'
        when 数学>=60 then '及格'
else '不及格') as 数学,
(case when 英语>=80 then '优秀'
        when 英语>=60 then '及格'
else '不及格') as 英语,
from table

分享到:
评论

相关推荐

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

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

    Oracle_case_when_用法

    在 Oracle 数据库中,`CASE WHEN` 表达式提供了一种在 SQL 查询中实现条件判断的方法,这使得开发人员能够在不使用 PL/SQL 的情况下编写更为灵活和复杂的查询语句。`CASE WHEN` 与 `DECODE()` 函数相似,但因其符合 ...

    oracle case when 语句的用法详解

    1. CASE WHEN 表达式有两种形式 代码如下:–简单Case函数 CASE sex ... CASE WHEN 在语句中不同位置的用法2.1 SELECT CASE WHEN 用法 代码如下:SELECT grade, COUNT (CASE WHEN sex = 1 THEN 1 /*sex 1为男生,2位

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

    - 类似于使用`IF`函数的方法,但使用`CASE WHEN`语句替换`IF`函数。 - 对于每个`download_type_id`的值,使用`CASE WHEN`语句检查是否等于特定的类型ID,如果是,则计数器加1,否则计数器加0。 - 使用`SUM()`函数...

    SQL Server中Case 的不同用法

    以下是对CASE关键字在SQL Server中不同用法的详细解释: 1. **在SELECT语句中的基本用法**: CASE表达式通常在SELECT语句中用来根据特定条件为数据列创建新的计算字段。例如,你可以根据书籍的价格范围给价格打...

    Case_When用法

    标题《Case_When用法》为我们提供了一个深入学习SQL中Case表达式使用方法的契机。在SQL中,Case表达式是一个条件分支结构,允许在查询中进行条件判断,并基于条件返回不同的结果。该表达式分为两种格式:简单Case...

    decode函数与case when 的妙用

    在阅读博客文章《decode函数与case when 的妙用》时,作者可能分享了一些具体的示例和使用技巧,帮助我们更好地理解和掌握这两种方法。通过学习和实践,我们可以将这些知识应用于日常的数据库操作,优化数据处理流程...

    sql case when exists not exists in not in

    在SQL查询中,`CASE WHEN`、`EXISTS`、`NOT EXISTS`以及`IN`和`NOT IN`是常用的操作符,它们用于处理复杂的条件判断和数据筛选。这些概念对于理解和编写高效的SQL语句至关重要,尤其是在数据分析和数据库管理中。 `...

    sql 中 case when 语法使用方法

    在SQL查询中,`CASE WHEN`常常用于根据不同的条件返回不同的值,或者在`SELECT`, `WHERE`, `GROUP BY`, `ORDER BY`等子句中进行复杂的逻辑操作。 首先,让我们了解`CASE WHEN`的基本语法。在一个普通的`SELECT`语句...

    SQL__case_when_then_的用法

    SQL__case_when_then_的用法

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

    本文将深入探讨如何使用`CASE WHEN`语句实现多条件查询,特别是针对给定的示例场景。 首先,让我们了解`CASE WHEN`的基本语法。`CASE WHEN`语句通常用于SQL查询中的`SELECT`, `WHERE`, `HAVING`等子句中,它允许...

    sql中的case用法

    SQL 中 Case 用法 Case 语句是 SQL 中一种强大的语句,用于根据不同的条件执行不同的操作。它可以用来实现复杂的逻辑操作,并且可以与其他 SQL 语句结合使用以实现更加复杂的查询。 SQL 中 Case 语句有两种格式:...

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

    以下是一个关于如何在MySQL排序中使用`CASE WHEN`方法的详细说明。 ### 1. `CASE WHEN` 基本语法 `CASE WHEN` 的基本语法如下: ```sql CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ...

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

    在这个实例中,我们将深入理解如何使用CASE WHEN,并通过几个具体的例子来演示其用法。 首先,我们来看一个简单的使用CASE WHEN进行字符串替换的例子。在这个示例中,我们有一个名为sales的表,其中包含了category...

    SQL中case语法的使用

    ### SQL中的Case语法使用详解 在SQL查询语言中,`CASE`语句是一个非常重要的功能,它可以用来构建复杂的条件逻辑,实现对数据的灵活处理。...希望本文能够帮助大家更好地理解和掌握`CASE`语句的使用方法。

    SQL中Case语句用法讨论_BJ

    1. **数据汇总**:可以使用`Case`语句在聚合函数中根据条件对数据进行分类汇总,例如统计不同国家男女人口数量: ```sql SELECT country, SUM(CASE WHEN sex = '1' THEN population ELSE 0 END) AS male_...

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

    在SQL语言中,`CASE WHEN THEN ELSE END`结构是一种强大的条件判断工具,它允许你在查询中根据特定条件执行不同的逻辑。这个结构可以在`SELECT`、`WHERE`、`HAVING`、`UPDATE`和`INSERT`等语句中使用,以实现复杂的...

    MySQL 中CASE-WHEN 的应用.pdf

    本文将深入探讨CASE-WHEN的用法,并结合一个问卷调查系统的实例来展示其在MySQL中的实际应用。 1. 业务需求分析 在开发问卷调查系统时,我们需要记录和统计参与者的回答,以生成分析报告。这涉及到一个问题表...

Global site tag (gtag.js) - Google Analytics