sql CASE 语法的问题:表达式代表什么意思

zzmdegm 2008-09-11 10:15:27
CASE 具有两种格式:
Simple CASE function:
CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[ ELSE else_result_expression ]
END

Searched CASE function:
CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[ ELSE else_result_expression ]
END

THEN result_expression 是当 input_expression = when_expression 计算结果为 TRUE,或者 Boolean_expression 计算结果为 TRUE 时返回的表达式。

问题:这里的表达式input_expression 或Boolean_expression 是指的数据表中的某一列名吗?
如:
Select(case flag
when 0 then "0代表的意义"
when 1 then "1代表的意义"
else "2代表的意义"
end)flag from temp;

但这个例子却是常数“1”啊,这是为什么:
select * from T_D where Issue in
(
select
case 1 when 1 then
(select Issue from T_D where Issue = (select min(Issue) from T_D where Issue > t1.Issue))
end
from T_D as t1 where Issue in (
select Issue from T_D
where (No1=2 and No2=4 and No3=6) or (No1=2 and No2=6 and No3=4) or
(No1=4 and No2=2 and No3=6) or (No1=4 and No2=6 and No3=2) or
(No1=6 and No2=4 and No3=2) or (No1=6 and No2=2 and No3=4)
)
)
...全文
1135 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuddy88 2008-10-30
  • 打赏
  • 举报
回复
gz
scu_love 2008-09-15
  • 打赏
  • 举报
回复

这里的表达式input_expression 或Boolean_expression 是指的数据表中的某一列名吗?

列的数据

所有行的数据, 有多少行就会判断多少次.
yohomonkey 2008-09-15
  • 打赏
  • 举报
回复
case 1 when 1 then ...
表示查询所有行的记录都执行“then”后面的语句。
相当于:
if(true){...}
或case 2 when 2 then ...
这里的表达式代表一个值


Select(case flag
when 0 then "0代表的意义"
when 1 then "1代表的意义"
else "2代表的意义"
end)flag from temp;

case flag表示字段flag =0如何;flag =1又如何。
相当于:
if(flag ==0){...}
if(flag ==1){...}
这里表达式flag 表示一个字段查询出来的值和when_expression 的值作对比
zzmdegm 2008-09-13
  • 打赏
  • 举报
回复
up
jerryma888888 2008-09-12
  • 打赏
  • 举报
回复
when_expression(判断条件表达式),result_expression (结果值)。
zzmdegm 2008-09-12
  • 打赏
  • 举报
回复
如果是这样理解:CASE 字段 WHEN 1 THEN 1” 或者“ CASE 字段=1 THEN 1
那么这句:
select * from T_D where Issue in
(
select
case 1 when 1 then
(select Issue from T_D where Issue = (select min(Issue) from T_D where Issue > t1.Issue))
end
from T_D as t1 where Issue in (
select Issue from T_D
where (No1=2 and No2=4 and No3=6) or (No1=2 and No2=6 and No3=4) or
(No1=4 and No2=2 and No3=6) or (No1=4 and No2=6 and No3=2) or
(No1=6 and No2=4 and No3=2) or (No1=6 and No2=2 and No3=4)
)
)

case 1 when 1 then ...表里面并没有1这个字段了,这怎么样理解?
maple0112 2008-09-11
  • 打赏
  • 举报
回复
漏了个WHEN, “CASE WEHN 字段=值 THEN ……”
maple0112 2008-09-11
  • 打赏
  • 举报
回复
input_expression 或Boolean_expression 字面翻译就是表达式,“CASE 字段 WHEN 1 THEN 1” 或者“ CASE 字段=1 THEN 1”
zzmdegm 2008-09-11
  • 打赏
  • 举报
回复
to:benbenkui
是任意一列的数据值吗?还是特指的某一列?
benbenkui 2008-09-11
  • 打赏
  • 举报
回复
表的数据
zzmdegm 2008-09-11
  • 打赏
  • 举报
回复
to:rangeon
这个值是那里的值呢,数据表里面的吗?
hengren2 2008-09-11
  • 打赏
  • 举报
回复
牛贴的哥们,朋友,兄弟姐妹们帮我踩踩这个贴啊,急~~~~~~~~~晚上通宵搞顶的任务-.-!!
http://topic.csdn.net/u/20080911/22/8b02ddc9-0a3c-497e-8a2d-7a1735bc116a.html
rangeon 2008-09-11
  • 打赏
  • 举报
回复
sorry,低级错误,“不是列名,是值...”
rangeon 2008-09-11
  • 打赏
  • 举报
回复
不是列表,是值,根据值输出不同数据
when 0 then '男'
when 1 then '女'
else '不男不女'

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧