Create Table T 
(a int;
b nchar(1);
c int
)
insert into t(a,b,c) Values(100,'-',20)
insert into t(a,b,c) Values(110,'+',20)
insert into t(a,b,c) Values(900,'*',400)
insert into t(a,b,c) Values(900,'/',300)select abc from t 
如何将b列转为运算符,计算得如下结果
abc   100-20=80
abc   110+20=130
abc   900*400=3600
abc  900/300=3

解决方案 »

  1.   

    select case when a.b='+' then a.a+a.c when a.b='-' then a.a-a.c when a.b='*' then a.a*a.c when a.b='/' then a.a/a.c end
    from t a
      

  2.   

    select CAST(a as varchar(5))+B+CAST(c as varchar(5)),
    case when a.b='+' then a.a+a.c when a.b='-' then a.a-a.c when a.b='*' then a.a*a.c when a.b='/' then a.a/a.c end
    from t a100-20 80
    110+20 130
    900*400 360000
    900/300 3
      

  3.   

    select CONVERT(varchar(10),a)+b+CONVERT(varchar(10),c)+'='+ 
    CONVERT(varchar(10),case b when '+' then a+c 
    when '+' then a+c
    when '-' then a-c
    when '*' then a*c
    when '/' then a/c end)
    from  t
      

  4.   

    SELECT
    'abc',
    CONVERT (varchar(10),a) + 
     CONVERT (varchar(10),b)
     +CONVERT (varchar(10),c) +'=' +
    CONVERT (varchar(10),
    CASE
    WHEN b='-' THEN
    a-c
    WHEN b='+' THEN
    a+c
    WHEN b='*' THEN
    a*c
    WHEN b='/' THEN
    a/c
    END
    )
    FROM t