sql server select case when的用法
2015-10-28 17:39
609 查看
select case when
CASE WHEN condition THEN result [WHEN ...] [ELSE result] END CASE 子句可以用于任何表达式可以有效存在的地方。 condition 是一个返回boolean 的表达式。 如果结果为真,那么 CASE表达式的结果就是符合条件的 result。 如果结果为假,那么以相同方式搜寻任何随后的 WHEN 子句。 如果没有 WHENcondition 为真,那么 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; |
相关文章推荐
- Oracle 12.1.0.1 GI+DATABASE打PSU
- centos7 安装 oracle 11G
- 安装sql server时提示缺少.NET 3.5 sp1
- 不停止MySQL服务增加从库的两种方式
- Hadoop、Spark、HBase与Redis的适用性见解
- Yii2使用Redis - 从安装redis到使用
- MVC部署-发布本地数据库(Localdb)时连接异常
- redis3.0.0 集群安装详细步骤
- oracle alter kill和alter kill immediate会话的区别
- 简单的sql server->bs或cs数据交互模式
- mysql通过gitd方式实现多线程主从复制
- ORACLE备份恢复杂谈记录
- SQL数据库基本操作语句
- PostgreSQL 数据迁移 (从Mysql到Postgres)
- MySQL Study之--MySQL innodb引擎备份工具XtraBackup之二(数据库全备)
- Oracle的翻页Sql语句
- Hive SQL的编译过程
- SQL 语句中union all和order by同时使用
- JSP实现从数据库导出数据到Excel下载的方法
- 【转】mysql查看日志位置和开启日志