T-SQL中的Select查询(续1)

原创 2006年06月04日 14:18:00

T-SQL中的Select查询(续)
下面来谈一下:Case表达式。
这里所说的case命令与其它语言中用到的case命令是有区别的。它不是用来对程序流程进行控制的,而是基于条件来逻辑地确定一个表达式的值。要注意:系统不会为case表达式提供列名,因此,必须记住一定要为每个case表达式提供列名。
1.      简单的Case
在简单的case中,第一个参数是要检查的表达式,接着是依次列出每个测试条件。但是,这种case的形式是有局限性的,它只能进行等值比较。Case表达式依次检查每个check条件,并返回第一个为真的when条件后的then子句中的值。如:
   SELECT CustomerTypeName,
   CASE [IsDefault]
   WHEN 1 THEN ‘default type’
   WHEN 0 THEN ‘possible’
   ELSE ‘_’
   END as AssignStatus
   FROM CustomerType
Case表达式是用end关键字和别名来结束的。在本例中,case表达式对isdefault列进行了检查,并在这个SQL select语句的结果集中生成了一个名为AssignStatus的列。
2.      布尔Case
与简单的case相比,case表达式的布尔形式更加灵活,每个case分支都具有自己的布尔表达式。所以,不仅在每个when条件中可以使用包括“=”在内的多种比较运算符,而且在比较时还可以引用其他的列:
   SELECT
   CASE
   WHEN 1<0 THEN ‘Reality is gone.’
   WHEN GetDate()=’3/06/2006’
   THEN ‘John gets his driver’’s license.’
  WHEN 1>0 THEN ‘Life is normal.’
   END AS RealityCheck
在布尔case中,如果遇到了第一个为真的when条件,就不会再继续对其他when条件进行检查了,而是直接返回这个when条件所对应的then子句的值。
布尔case表达式可以处理包含布尔and和布尔or的复杂条件。下面的例子代码就使用了一个批处理程序来创建case表达式,而且在这个case表达式中包含了andbetween运算符:
   DECLARE @b INT,@q INT
   SET @b=2006
   SET @q=22
   SELECT
CASE
WHEN @b=2006 AND @q BETWEEN 15 AND 30 THEN 1
    ELSE NULL
END AS Test
 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

T-SQL语句之Select(一)

Operator Description != Tests two expressions not being equal to each other. ...

Oracle数据库 —— 基础理论及SQL之select语句(1)

DB(database):是真正存储数据的地方。 数据库是一种软件产品,是用于存放数据,管理数据的存储仓库,是有效组织在一起的数据集合。 DBMS:数据库管理系统,管理数据库的。 无论什么软件,...

迁移long类型对象 SQL> copy from hr/hr@ora9i INSERT test1 using select * from test;

迁移long类型对象  (2008-06-23 17:44:49) 转载▼ 标签:  it 分类: oracle基础 在帮客户进...

深入浅出SQL教程之嵌套SELECT语句1

来源:http://dev.yesky.com/110/2672110.shtml  嵌套SELECT语句也叫子查询,形如: SELECT name FROM bbc WHERE region = (...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)