SQL语句写法的2种疑问

南瓜饼 2010-12-26 12:28:17

select * from stuMarks
select stuNo,成绩=case
when LabExam<60 then 'E'
when LabExam between 60 and 69 then 'D'
when LabExam between 70 and 79 then 'C'
when LabExam between 80 and 89 then 'B'
else 'A'
end
from stuMarks

这样写就不报错
declare @a varchar(5)
select stuNo,@a as 成绩
if(LabExam<60)
@a='E'
else if(LabExam between 60 and 69)
@a='D'
else if(LabExam between 70 and 79)
@a='C'
else if(LabExam between 80 and 89)
@a='B'
else
@a='A'
from stuMarks

这样写就不行
错误提示如下
消息 102,级别 15,状态 1,第 2 行
'@a' 附近有语法错误。
消息 102,级别 15,状态 1,第 4 行
'@a' 附近有语法错误。
消息 102,级别 15,状态 1,第 6 行
'@a' 附近有语法错误。
消息 102,级别 15,状态 1,第 8 行
'@a' 附近有语法错误。
...全文
93 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
快溜 2010-12-26
  • 打赏
  • 举报
回复
declare @a varchar(5)
select stuNo,
(if(LabExam<60)
@a='E'
else if(LabExam between 60 and 69)
@a='D'
else if(LabExam between 70 and 79)
@a='C'
else if(LabExam between 80 and 89)
@a='B'
else
@a='A') as 成绩
from stuMarks

这样试一试
dawugui 2010-12-26
  • 打赏
  • 举报
回复
第二种纯属吃饱了没事干.

就如同你想研究个什么事情,也得把方向搞对了再研究.
dawugui 2010-12-26
  • 打赏
  • 举报
回复
select * from stuMarks
select stuNo,成绩=case
when LabExam<60 then 'E'
when LabExam between 60 and 69 then 'D'
when LabExam between 70 and 79 then 'C'
when LabExam between 80 and 89 then 'B'
else 'A'
end
from stuMarks

这种写法已经很好了.

第二种纯属吃饱了没事干.
mingchaoyan 2010-12-26
  • 打赏
  • 举报
回复
楼上权威来了 楼主可以安心了
feixianxxx 2010-12-26
  • 打赏
  • 举报
回复
declare @a varchar(5)
select stuNo,@a as 成绩
if(LabExam<60)
@a='E'
else if(LabExam between 60 and 69)
@a='D'
else if(LabExam between 70 and 79)
@a='C'
else if(LabExam between 80 and 89)
@a='B'
else
@a='A'
from stuMarks

sql server不支持这样的语法。。
select后面不能带if这样的控制流。。。

正确的实现方式就是用case when
特殊时候可以使用 isnull 实现。。
南瓜饼 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ssp2009 的回复:]
SQL code
declare @a varchar(5)
select stuNo,
(if(LabExam<60)
@a='E'
else if(LabExam between 60 and 69)
@a='D'
else if(LabExam between 70 and 79)
@a='C'
else if(LabExam between 80 and 89)
@a=……
[/Quote]
这样也不行啊
whb147 2010-12-26
  • 打赏
  • 举报
回复
你要知道规则,有些是不能用的
999朵玫瑰 2010-12-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dawugui 的回复:]
第二种纯属吃饱了没事干.

就如同你想研究个什么事情,也得把方向搞对了再研究.
[/Quote]up

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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