SQL查询语句where参数

@A和@B 都是输入参数
@A是表info中的字段
@B是表info中的值
select * from info where @A=@B
这么写没结果出来!要怎么改?
加引号没意义啊,‘@A’那不就默认为@A

我就是想这么看看,有没有好的办法!除了把@A和字段名一个个比较方法以外!
还有就是想了解下SQL中,关于@参数 在编译的时候到底变成了什么!有相关资料,也可以!
谢谢大侠

楼主这样写是没有用的

如若你想把字段名或者表名作参数可以这样样子
写一个存储过程 如下

ceeate proc test
@A varchar(20),@B varhcar(20)
as
declare @sql varchar(4000)
begin
set @sql='select * from info where '+ @A+'='+@B
exec @sql
end
这样才可以,具体什么原因很复杂,涉及到数据库的具体编译策略,如果楼主有兴趣可以,看看数据库的设计原理
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-15
没有你这么写的
从来都是select * from info where 字段=@B
没听说过把字段赋值的
而且这是存储过程 你前边定义了没?
ceeate proc a
@a char(10)
as
select * from info where 字段=@a
第2个回答  2010-07-15
这个明显是要使用动态的方法写的
这里需要注意你的 @A表示的字段是什么类型的

如果@A是字符型的字段,@B是字符型的参数 可以这样:
exec('select * from info where '+@A+'='''+@B+'''')

如果@A是数字型的字段,@B是数字型的参数 ,可以这样
declare @s varchar(8000)
set @s='select * from info where '+@A+'='+rtrim(@B)
exec(@s)
第3个回答  2010-07-15
select * from info where @A='@B';
@B用英文的单引号引起来
相似回答