若一个表tableA,里面有字段name1,name2,score,
若declare @field nvarchar(50)
set @field='name1'
那么要怎么实现子查询中作为条件的列名由@field提供?
比如上述我将@field赋为'name1',那么将等效于
select score from tableA where name1='aaa'?,
但问题是。。在sqlserver里面
select score from tableA where '@field'='aaa',是无效的,请教各位怎么处理?

解决方案 »

  1.   

    尝试使用exec,但是select score from tableA where exec('@field')='aaa'也会报错,还是格式不对呢
      

  2.   

    sqlserver 的话参考 动态 sql 语句。
    -- name1,name2,score,
    declare @field nvarchar(50)
    set @field='name1'
    declare @v_sql nvarchar(200) = 'select score from tableA where ''''@field''''=''''aaa''''
    exec @v_sql;
    大概是这样写的,具体你可以搜一下 sql 动态语句执行。