SQL中关键字Case的使用

Posted 奥蕾莉亚·风行者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中关键字Case的使用相关的知识,希望对你有一定的参考价值。

本文非原创

 

它主要用来简化SQL表达式,在任何允许使用表达式的地方均可使用,
根据条件的不同返回不同的值。

注意:它不能单独执行,只能作为语句的一部分使用,
分为简单 case 表达式和搜索 case 表达式。

1.简单 case 表达式:

它是一个测试表达式与一组简单表达式进行比较,如果和某一个值相等,
则返回对应表达式的值。


语法: case 表达式 / 列名变量
when 测试值1 then 结果表达式1
when 测试值2 then 结果表达式2
……
else 结果表达式
end

例:(1)select 姓名=case book_name
when \'++c\' then \'c语言\'
when \'hello\' then \'hahaha\'
when \'hello1\' then \'sdf\'
when \'hello2\' then \'haasdfghaha\'
else \'没有值\'
end from yuesubiao

(2)declare @aa varchar(10)
set @aa=(select egg_name from egg where egg_shu=14)
select case @aa
when \'hhh\' then \'1111\'
when \'ll\' then \'222\'
else\'aaaaaaaaaaaaaaa\'
end



2.搜索 case 表达式:

它是一个测试表达式与一组搜索布尔表达式进行比较,
如果和某一个值相等,则返回对应表达式的值。


语法: case
when 布尔表达式1 then 结果表达式1
when 布尔表达式2 then 结果表达式2
……
else 结果表达式
end

 

例: (1) select egg_name,egg_liang,所得税=
case
when (egg_zhong<=500) then \'1111111\'
when (egg_zhong<=5000) then\'222222\'
when (egg_zhong<=50000) then\'33333333\'
else\'444444\'
end
from egg

 

(2) select book_name,www=
case
when left(ltrim(book_addr),3)=\'hgf\' then \'123\'
when left(ltrim(book_addr),3)=\'hhh\' then \'456\'
when left(ltrim(book_addr),3)=\'456\' then \'789\'
else\'AAAAAAAA\'
end
from YI

 

下面博文讲了Case的常见使用情况,很不错。

http://www.cnblogs.com/Ronin/archive/2006/07/20/455388.html#2810859

http://www.cnblogs.com/Ronin/archive/2006/07/20/455756.html

 

以上是关于SQL中关键字Case的使用的主要内容,如果未能解决你的问题,请参考以下文章

Oracle SQL - 使用 Case 语句缺少关键字错误的更新查询

SQL语句中case,when,then的用法

SQL语句中Case 的用法

在 where 子句中使用 case 语句的 Oracle Missing 关键字

scala 使用case 关键字定义类不需要创建对象直接调用

CASE SQL Oracle 查询 - 出了啥问题?