`

sql语言中有没有类似C语言中的switch case的语句??case

阅读更多
sql语言中有没有类似C语言中的switch case的语句??

  没有,用case   when   来代替就行了.  
      
  例如,下面的语句显示中文年月  
   
  select   getdate()   as   日期,case   month(getdate())  
  when   11   then   '十一'  
  when   12   then   '十二'  
  else   substring('一二三四五六七八九十',   month(getdate()),1)  
  end+'月'   as   月份

=====================================================================

CASE 可能是 SQL 中被误用最多的关键字之一。虽然你可能以前用过这个关键字来创建字段,但是它还具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。

首先让我们看一下 CASE 的语法。在一般的 SELECT 中,其语法如下:

SELECT <myColumnSpec> =
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END

在上面的代码中需要用具体的参数代替尖括号中的内容。下面是一个简单的例子:

USE pubs
GO
SELECT
     Title,
    'Price Range' =
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END
FROM titles
ORDER BY price
GO

这是 CASE 的典型用法,但是使用 CASE 其实可以做更多的事情。比方说下面的 GROUP BY 子句中的 CASE:

SELECT 'Number of Titles', Count(*)
FROM titles
GROUP BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END
GO

你甚至还可以组合这些选项,添加一个 ORDER BY 子句,如下所示:

USE pubs
GO
SELECT
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END AS Range,
     Title
FROM titles
GROUP BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END,
     Title
ORDER BY
    CASE
        WHEN price IS NULL THEN 'Unpriced'
        WHEN price < 10 THEN 'Bargain'
        WHEN price BETWEEN 10 and 20 THEN 'Average'
        ELSE 'Gift to impress relatives'
    END,
     Title
GO

注意,为了在 GROUP BY 块中使用 CASE,查询语句需要在 GROUP BY 块中重复 SELECT 块中的 CASE 块。

除了选择自定义字段之外,在很多情况下 CASE 都非常有用。再深入一步,你还可以得到你以前认为不可能得到的分组排序结果集。
分享到:
评论

相关推荐

    Oracle PL-SQL语言初级教程.pdf

    - **CASE表达式**:提供了类似C语言的switch-case结构。 5. **PL/SQL块** PL/SQL块有三种类型:匿名块、命名块(如存储过程、函数、包)和触发器。匿名块不需在数据库中预编译,可以直接在SQL*Plus或其他客户端...

    c语言

    3. **结构化编程**:支持if-else语句、switch-case语句和循环结构(for、while),用于逻辑控制。 4. **指针**:C语言的指针是其强大之处,可以用来直接操作内存,实现高效的数据操作和算法实现。 5. **预处理器**:...

    关于C语言,Java,SQLServer的笔试题目

    4. **流程控制语句**:如if-else条件语句,switch-case多分支语句,for、while、do-while循环语句。 5. **函数**:定义、调用、参数传递、返回值等。 6. **指针**:C语言的精髓,用于直接操作内存,实现高效的数据...

    sql 中 case when 语法使用方法

    在SQL语言中,`CASE WHEN`语句是一个非常强大的逻辑判断工具,它可以替代C语言中的`switch case`结构,提供灵活的数据处理和条件判断。在SQL查询中,`CASE WHEN`常常用于根据不同的条件返回不同的值,或者在`SELECT`...

    C语言学生选修课管理系统.rar

    了解变量声明、运算符、控制结构(如if-else、switch-case、for、while)、函数定义和调用等基本概念是必不可少的。 2. **数据结构**:在学生选修课管理系统中,数据结构扮演了关键角色。可能使用到的数据结构包括...

    学生管理课程设计 c语言

    它通过switch-case语句根据用户输入调用不同的函数,如`accept()`,`insert()`,`sort()`和`del()`。 - 其他函数如`accept()`用于接收用户输入的学生信息,`insert()`插入新学生,`sort()`排序学生信息,`del()`...

    关于C语言,Java,SQLServer的机试题目

    1. 基本语法:包括变量声明、数据类型(整型、浮点型、字符型等)、运算符优先级、控制结构(if-else、switch-case、for、while、do-while)。 2. 函数:函数定义与调用,参数传递,递归函数的应用,以及头文件和...

    计算机二级C语言公共基础知识.pdf

    虽然文档中没有直接提及,但考虑到C语言在计算机二级考试中的重要性,可能会涉及变量声明、基本数据类型、控制结构(例如if-else语句,switch-case语句)、循环结构(for循环、while循环)等。 6. 算法和数据结构在...

    C C++ JAVA和SQL精华资料

    资料可能涵盖C语言的关键概念,如数据类型、控制结构(if-else, switch-case, for, while)、函数、指针、内存管理等。学习C语言有助于理解计算机工作原理,为学习其他高级语言打下坚实基础。 2. **C++**:C++是在...

    C语言景区景点查询系统(包含19484条景区信息)-华中科技大学C语言课程设计-

    这涉及到C语言的控制流(if-else, switch-case)和字符串处理,以及可能的字符终端颜色控制,以提升用户体验。 5. **数据检索算法** 根据用户输入的条件,系统需要快速定位并返回相关信息。这可能涉及到排序算法...

    计算机二级C语言.pdf

    7. **数据库语言**:负责数据库中查询操作的语言是数据操纵语言(DML),如SQL的SELECT语句。选项C正确。 8. **实体间联系**:教师和课程间的关系是多对多(m:n),因为一个教师可以教多门课,一门课也可以由多个...

    2011年3月计算机二级C语言考试(试题及答案详解)[汇编].pdf

    7. **数据库操作语言**:负责查询操作的数据库语言是数据操纵语言(C语言,即SQL中的SELECT语句)。 8. **实体间联系**:教师与课程间的关系是多对多(m:n),一个教师可以教多门课,一门课也可以由多个教师教授。 ...

    2023年安徽省计算机等级二级考试真题C语言6月参考答案.doc

    12. C语言关键字:C语言的关键字包括switch、default、case等,但printf不是关键字。 13. 常量:合法的常量包括’xabcde’、”xlf”、0x12、2.1e3等。 14. 变量定义:在C语言中,可以使用多种方式定义变量,例如...

    220 进销存管理系统 C语言源代码文件

    要编写进销存管理系统,你需要熟悉C语言的基本语法,包括变量、常量、数据类型、运算符、流程控制语句(如if-else、switch-case、for、while)等。 2. **数据结构**: - 数据结构是组织和管理大量数据的关键。在进...

    2011年9月全国计算机等级考试二级笔试试卷C语言程序设计

    - **知识点**:在C语言中,可以将循环与switch-case语句结合使用,实现基于不同条件的多分支选择。题目描述的程序中,根据输入的值进行不同的输出,体现了switch-case语句的灵活性。 ### 20. for循环的控制与终止 ...

    计算机二级C语言考试上机冲刺试题及答案课程.pdf

    19. switch语句:在给定的程序中,case标签没有break语句会导致连续执行多个case块。输入1 2 3 4 5 0后,输出结果为6666656。 20. switch语句与随机数:rand()函数生成0到指定范围内的随机数,本程序段中,当n等于1...

    图书管理系统C语言.rar

    开发者需要掌握基本的C语言语法,如变量定义、数据类型、流程控制(if-else、switch-case、for、while等)、函数定义和调用等。 2. **文件操作**:在图书管理中,数据通常存储在文件中。C语言提供标准库函数(如...

    09年计算机二级c语言考试大纲

    if-else语句是最常用的分支结构,还有switch-case语句用于多条件选择。正确使用分支结构可以使程序逻辑更清晰、更有效率。 ### 三、高级话题 #### 1. 文件操作 文件操作涉及到如何读写磁盘上的文件,这是软件开发...

Global site tag (gtag.js) - Google Analytics