SQL语句求解

jhdxhj 2012-04-20 11:04:31
select c.sLSight from D_PatientCaseInfo c where c.nPID='1503571' 这个语句 查询到结果:
0.05 0.6
指数 0.4
查询结果正确,但是为什么接下来的查询语句就出问题了?select
(case when (sLSight = '指数') then '0.001'
when (sLSight = '手动') then '0.002'
when (sLSight = '光感') then '0.003'
when (sLSight = '无光感') then '0.004'

when (sLSight = '不配合') then '0.005'
when (sLSight = '义眼') then '0.006'
else 0 end) as '左眼视力,
(case when (sRSight = '指数') then '0.001'
when (sRSight = '手动') then '0.002'
when (sRSight = '光感') then '0.003'
when (sRSight = '无光感') then '0.004'

when (sRSight = '不配合') then '0.005'
when (sRSight = '义眼') then '0.006'

else 0 end) as '右眼视力 from D_PatientCaseInfo c where c.nPID='1503571'
查询的结果为什么都是
0 0
0 0呢?
...全文
156 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lugyedo 2012-04-20
  • 打赏
  • 举报
回复
select c.sLSight from D_PatientCaseInfo c where c.nPID='1503571'
这个语句查询到结果: 0.05 0.6

而你下边的sql语句竟然是
case when (sLSight = '指数') then '0.001'
when (sLSight = '手动') then '0.002'
when (sLSight = '光感') then '0.003'
when (sLSight = '无光感') then '0.004'

c.sLSight是等于0.05,0.6这样的数值呢,还是'指数'、'手动'、'光感'、'无光感'这样的字符串?
估计是写错了吧~
jhdxhj 2012-04-20
  • 打赏
  • 举报
回复
坐等答案
Dr-饼 2012-04-20
  • 打赏
  • 举报
回复
sLSight又能搜出0.05,还能匹配 '指数'!
类型有待考证啊!
case sLSight when '指数' then '0.001' when。。。。end 还能省点字符
q359600900 2012-04-20
  • 打赏
  • 举报
回复
select c.sLSight from D_PatientCaseInfo c where c.nPID='1503571' 这个语句 查询到结果:
0.05 0.6

when (sRSight = '不配合') ?你这个sLSight字段内容到底是什么?
ABCDEF 2012-04-20
  • 打赏
  • 举报
回复
按楼主描述模拟:
create table D_PatientCaseInfo(
nPID varchar(50),
sLSight varchar(50),
sRSight varchar(50)
)
insert into D_PatientCaseInfo(nPID,sLSight,sRSight) values('1503571','指数','指数')
insert into D_PatientCaseInfo(nPID,sLSight,sRSight) values('1503572','手动','手动')
insert into D_PatientCaseInfo(nPID,sLSight,sRSight) values('1503573','光感','光感')
insert into D_PatientCaseInfo(nPID,sLSight,sRSight) values('1503574','无光感','无光感')
insert into D_PatientCaseInfo(nPID,sLSight,sRSight) values('1503575','不配合','不配合')
insert into D_PatientCaseInfo(nPID,sLSight,sRSight) values('1503576','义眼','义眼')

select
(
case
when (sLSight = '指数') then 0.001
when (sLSight = '手动') then 0.002
when (sLSight = '光感') then 0.003
when (sLSight = '无光感') then 0.004
when (sLSight = '不配合') then 0.005
when (sLSight = '义眼') then 0.006
else 0 end) as '左眼视力',
(case when (sRSight = '指数') then 0.001
when (sRSight = '手动') then 0.002
when (sRSight = '光感') then 0.003
when (sRSight = '无光感') then 0.004

when (sRSight = '不配合') then 0.005
when (sRSight = '义眼') then 0.006

else 0 end) as '右眼视力'
from D_PatientCaseInfo c where c.nPID='1503571'
lffw0212 2012-04-20
  • 打赏
  • 举报
回复
个人估计应该是写反了!!
应该是
select
(case when (sLSight = '0.001') then '指数'
when (sLSight = '0.002') then '手动'

…………

这样才对!
@信心 2012-04-20
  • 打赏
  • 举报
回复
问一下你的后台数据库是oracle Or msql ?
oracel 支持case when ,decode()
mssql 是不支持的!
bdmh 2012-04-20
  • 打赏
  • 举报
回复
字段内容末尾有没有空格啥的

111,126

社区成员

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

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

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