• CASE 表达式


    CASE 表达式是一个标量表达式,它基于条件逻辑来返回一个值。注意,CASE 是一个表达式,而不是一条语句;也就是说,不能用它来控制活动的流程,也不能根据条件逻辑来做某些处理。相反,它只是根据条件逻辑来返回某个值。因为CASE是一个标量表达式,所以它可以支持任何标量表达式(如SELECT、WHERE、HAVING,以及ORDER BY)、CHECK 约束,等等。

    CASE 表达式有两种格式:简单表达式和搜索表达式。CASE简单格式将一个值(或一个标量表达式)与一组可能的取值进行比较,并返回第一个匹配的结果。如果列表中没有值等于测试值,CASE 表达式就返回其ELSE 子句(如果存在)中列出的值。如果CASE表达式中没有ELSE 子句,则默认将其视为 ELSE  NULL.

    例:

    -- case 简单格式将一个值(或一个标量表达式)与一组可能的取值进行比较,
    -- 并返回第一个匹配的结果。
    select productid,productname,categoryid,
     case categoryid
      when 1 then 'Beverages'
      when 2 then 'Condiments'
      when 3 then 'Confections'
      when 4 then 'Dairy Products'
      when 5 then 'Grains/Cereals'
      when 6 then 'Meat/Poultry'
      when 7 then 'Produce'
      when 8 then 'Seafood'
      else 'Unknown Category'
     end as categoryname
     from [Northwind].[dbo].[products]

    -- case 另一个演示,对视图进行查询,根据 freight 的逻辑顺序生成 3个组
    -- 再把组的编号翻译成组的描述信息(Low,Medium,以及 High);
    select orderid,customerid,freight,
     case NTILE(3) over( order by freight)
      when 1 then 'Low'
      when 2 then 'Medium'
      when 3 then 'High'
      else 'Unknown'
     end as titledesc
    from [Northwind].[dbo].[Orders Qry]

    -- 查询商品的价格是否小于 1000.00,在 1000.00 到3000.00,或者大于3000.00而生
    -- 成相应的价格描述
    select orderid,customerid,freight,
     case
      when freight<1000.00 then 'Less then 1000'
      when freight between 1000.00 and 3000.00 then 'Between 1000 and 3000'
      when freight>3000.00 then 'More than 3000'
      else 'Unknown'
     end as valuecategory
     from [Northwind].[dbo].[Orders Qry]

  • 相关阅读:
    Handler详细说明系列(六)——View的post()详解
    2013年6月17日星期一
    2013年6月16日星期日
    线程管理四种方法
    java 线程 ProducerAndConsumer
    POJ 2948 DP
    Java的递归算法
    开机黑屏 仅仅显示鼠标 电脑黑屏 仅仅有鼠标 移动 [已成功解决]
    网络安全审查制度即将推出 手机App安全加密成必定趋势
    递归算法浅谈
  • 原文地址:https://www.cnblogs.com/zhangdx/p/3703474.html
Copyright © 2020-2023  润新知