sql 根据一个字段的值判断显示其他字段的值

比如一个多选试题的表字段题目、选项A、选项B、选项C、选项D、正确答案对应字段名如下:
topic A B C D ans
测试题目 选项1 选项2 选项3 选项4 A、C
怎样根据ans正确答案字段里的值判断显示出字段A、B、C、D中的内容
比如ans中的值为A、C,则显示出选项1和选项3

请问SQL语句怎么写?多谢
sql server数据库

第1个回答  推荐于2017-12-16
select
case when charindex(a,ans) >0 then a

ELSE '' END as a,

case
when charindex(b,ans) >0 then b

ELSE '' END as b,
case
when charindex(c,ans) >0 then c

ELSE '' END as c,
case
when charindex(d,ans) >0 then d
ELSE '' END as d,
ans

from baby
你这个设计的不太好,应该用两个表,一个表只存有几个选项,另一个表存答案本回答被网友采纳
第2个回答  2014-03-18

使用分隔字符串:


create   function   f_splitstrX(@SourceSql   varchar(8000),@StrSeprate   varchar(100))   
  returns   @temp   table(F1   varchar(100))   
  as     
  begin   
  declare   @ch   as   varchar(100)   
  set   @SourceSql=@SourceSql+@StrSeprate     
  while(@SourceSql<>'')   
                  begin   
                  set   @ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1)   
  insert   @temp   values(@ch)   
  set   @SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),'')   
                  end   
  return   
  end   
  
  --使用时 
  declare @ans varchar(200)
  select @ans=ans from 表 where 题目ID=5
  declare @columns varchar(1000)
  set @columns =''
  select @columns=@columns+','+F1 from dbo.f_splitstrX('、',@ans) 
  set @columns=stuff(@columns,1,1,'')
  exec ('select ' +@
 + ' from 表 where 题目ID=5')

第3个回答  2014-03-18
什么数据库?下次提问一定要写清楚是什么环境哦,万一别人费了半天劲结果还是数据库不一样多不好
相似回答