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
 

MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适

MySQL大数据量分页查询方法及其优化 ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LI...

T-SQL语句之Select(一)

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

SQL 21日自学通(v1.0)笔记1(select语句)

 select [ALL/DISTINCT amount from checks;

一套SQL笔试题1、查找整个职员表的所有内容。select*fromemployees2、查看雇员

一套SQL笔试题 1、查找整个职员表的所有内容。 select * from employees 2、查看雇员名字(last_name)。 select last_name from em...

SQL 基础--SELECT 查询

  • 2013年09月11日 11:21
  • 77KB
  • 下载

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

DB(database):是真正存储数据的地方。 数据库是一种软件产品,是用于存放数据,管理数据的存储仓库,是有效组织在一起的数据集合。 DBMS:数据库管理系统,管理数据库的。 无论什么软件,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:T-SQL中的Select查询(续1)
举报原因:
原因补充:

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