`
lukeye
  • 浏览: 25651 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

SQL中CASE使用方法

阅读更多
SQL CASE 表达式是一种通用的条件表达式,类似于其它语言中的 if/else 语句。

CASE WHEN condition THEN result
[WHEN ...]
[ELSE result]
END
CASE 子句可以用于任何表达式可以有效存在的地方。 condition 是一个返回boolean 的表达式。 如果结果为真,那么 CASE 表达式的结果就是符合条件的 result。 如果结果为假,那么以相同方式搜寻任何随后的 WHEN 子句。 如果没有 WHEN condition 为真,那么 case 表达式的结果就是在 ELSE 子句里的值。 如果省略了 ELSE 子句而且没有匹配的条件, 结果为 NULL。

例子:

SELECT * FROM test;
a
---
1
2
3
SELECT a,
CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 'other'
END
FROM test;
a | case
---+-------
1 | one
2 | two
3 | other


所有 result 表达式的数据的类型都必须可以转换成单一的输出类型。 

下面这个"简单的" CASE 表达式是上面的通用形式的一个特殊的变种。

CASE expression
WHEN value THEN result
[WHEN ...]
[ELSE result]
END
先计算 expression 的值, 然后与所有在WHEN 子句里声明的 value 对比,直到找到一个相等的。 如果没有找到匹配的,则返回在 ELSE 子句里的 result (或者 NULL)。 这个类似于 C 里的 switch 语句。

上面的例子可以用简单 CASE 语法来写:

SELECT a,
CASE a WHEN 1 THEN 'one'
WHEN 2 THEN 'two'
ELSE 'other'
END
FROM test;
a | case
---+-------
1 | one
2 | two
3 | other


CASE 表达式并不计算任何对于判断结果并不需要的子表达式。 比如,下面是一个可以避免被零除的方法:

SELECT ... WHERE CASE WHEN x <> 0 THEN y/x > 1.5 ELSE false END;
例1:一道SQL语句面试题
表内容:
2005-05-09 胜
2005-05-09 胜
2005-05-09 负
2005-05-09 负
2005-05-10 胜
2005-05-10 负
2005-05-10 负

如果要生成下列结果, 该如何写sql语句?

            胜 负
2005-05-09  2  2
2005-05-10  1  2
----------------------------------------------------------
create table #tmp(rq varchar(10),shengfu nchar(1))

insert into #tmp values('2005-05-09','胜')
insert into #tmp values('2005-05-09','胜')
insert into #tmp values('2005-05-09','负')
insert into #tmp values('2005-05-09','负')
insert into #tmp values('2005-05-10','胜')
insert into #tmp values('2005-05-10','负')
insert into #tmp values('2005-05-10','负')
select rq, sum(case when shengfu='胜' then 1 else 0 end)'胜',
           sum(case when shengfu='负' then 1 else 0 end)'负'
           from #tmp group by rq
----------------------------------------------------------






例2:表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。










select (case when a>b then a else b end ),
       (case when b>c then b esle c end)
       from table_name

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

++++++++++++++++++++++++++++++++++++++++++++++++++++
select fuserid,
case
when  fuserid=28 then 'qq'
when  fuserid=29 then 'qs'
else 'aa' end)as 'ss'
from t_sys_grightdetail
分享到:
评论

相关推荐

    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用法

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

    SQL中case的使用

    SQL中Case的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。

    SQL Server中Case 的不同用法

    当你想基于CASE表达式的返回值进行排序时,可以在ORDER BY子句中使用CASE。这使得你可以根据逻辑条件而非原始数据字段进行排序。在以下示例中,首先按价格范围排序,然后按书名排序。 ```sql SELECT CASE WHEN...

    case语句 sql server

    case语句 sql server case语句

    CASE的用法 (Transact-SQL)

    - **SELECT 语句**: 在 SELECT 语句中使用 CASE 表达式可以根据不同的条件动态生成列值。 - **UPDATE 语句**: 在 UPDATE 语句中使用 CASE 表达式可以根据不同的条件更新行。 - **DELETE 语句**: 在 DELETE 语句中...

    sql数据库 转 Access SQL语句改写之 Case When Then When Then Else End

    - 在外部查询中使用`SUM`函数对这些字段进行汇总,并使用`COUNT(*)`计算记录数量。 - 对于`zong_ds`字段,使用`ISNULL`函数处理可能的NULL值问题,在Access中则使用`IIF`函数进行类似的处理。 **SQL原始查询示例:*...

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

    这种结构非常适合在报表中使用,能够帮助我们快速获取所需的数据统计结果。 #### 基本语法 ```sql SELECT SUM(CASE WHEN condition THEN value ELSE 0 END) AS total FROM table; ``` 其中: - `condition` 是...

    sql中case语句的用法浅谈

    SQL中Case的使用方法 Case具有两种格式。简单Case函数和Case搜索函数。 代码如下:–简单Case函数 CASE sex  WHEN ‘1’ THEN ‘男’  WHEN ‘2’ THEN ‘女’ ELSE ‘其他’ END –Case搜索函数 CASE WHEN sex = ...

    SQLsevrer CASE用法

    除了在查询中使用,`CASE` 表达式还可以在定义表的约束时发挥作用。例如,确保女性员工的工资不低于一定数额: ```sql CONSTRAINT check_salary CHECK ( CASE WHEN sex = '2' THEN CASE WHEN salary &gt; 1000 THEN...

    SQL经典面试题及答案 CASE

    在面试中,SQL问题通常涉及到数据查询、聚合、分组、条件判断等多个方面,考察应聘者对数据库操作的熟练程度和逻辑思维能力。下面,我们将深入探讨几道经典的SQL面试题及其解决方案。 1. **CASE语句与GROUP BY结合...

    Delphi中sql语句的使用总结

    在Delphi中使用SQL语句是与数据库进行交互的重要手段之一。本文将详细介绍如何在Delphi环境中构造和执行SQL查询,并给出具体的示例来帮助理解。 #### 一、基本SQL查询的构建 在Delphi中,通过`TADOQuery`组件来...

    SQL__case_when_then_的用法

    SQL__case_when_then_的用法

    sql 中 case when 语法使用方法

    没有,用case when 来代替就行了. 例如,下面的语句显示中文年月 代码如下: select getdate() as 日期,case month(getdate()) ...例如,你可以在 WHERE 子句中使用 CASE。 首先让我们看一下 CASE 的语法。在一般的 SELEC

    SQL case_when用法

    本文档介绍了SQL中case...when的用法。

    sql case when exists not exists in not in

    在实际应用中,需要根据具体情况选择使用哪种方法。`EXISTS`和`NOT EXISTS`通常在处理子查询时更为高效,因为它们只关心是否有匹配的行,而不关心具体的行内容。而`IN`和`NOT IN`在处理简单条件时较为直观,但如果与...

    PB脚本中SQL语句写法与SQL中语句写法对照

    在SQL语言中,可以使用Update表名Set字段名=case字段名when值1then值2else值三endFrom表名Where条件语句来实现条件语句的写法。 四、取余函数Mod() 在PB脚本中,可以使用Mod(要取余数的值,取余值)函数来实现取余数...

Global site tag (gtag.js) - Google Analytics