查询条件设置

wcqgm 2008-03-27 01:26:16
在查询分析器中执行
select id from basis_log where f_f1='a' and f_f2='b' and f_f3='c'
可以正确地执行.
但是改成
declare @cond varchar(100)
set @cond = 'f_f1=''a'' and f_f2=''b'' and f_f3=''c'''
select * from basis_log where @cond
执行出错.
请问能有什么好的办法能解动态条件问题.

我的情况主要是:在存储过程中,我的条件个数是参数决定的,这个参数是用户的操作来决定的.主要是获得查询中的值.如果我将查询语句也写成字符串,再执行的话,我就没有办法获得查询的值(id),请问能有什么好的办法?谢谢!
...全文
71 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wcqgm 2008-03-27
楼主正解,谢了兄弟,20分有小少,不要介意,下次多给些分。
  • 打赏
  • 举报
回复
pt1314917 2008-03-27

declare @cond varchar(100)
declare @sql nvarchar(200)
declare @result int
set @cond = 'f_f1=''a'' and f_f2=''b'' and f_f3=''c'''
set @sql='select @id=id from basis_log where '+@cond
exec sp_executesql @sql,N'@id int output',@result output
select @result
  • 打赏
  • 举报
回复
wcqgm 2008-03-27
主要是能获得查询的值,便是条件是动态的,请大家帮我看看呀
  • 打赏
  • 举报
回复
wcqgm 2008-03-27
declare @result int
declare @cond varchar(100)
select @result=id from basis_log where f_f1='a' and f_f2='b' and f_f3='c'


set @cond = 'f_f1=''a'' and f_f2=''b'' and f_f3=''c'''
select @result=id from basis_log where @cond
  • 打赏
  • 举报
回复
dawugui 2008-03-27
declare @cond varchar(100)
set @cond = 'f_f1=''a'' and f_f2=''b'' and f_f3=''c'''
exec('select * from basis_log where ' + @cond )
  • 打赏
  • 举报
回复
pt1314917 2008-03-27

declare @cond varchar(100)
set @cond = ' f_f1=''a'' and f_f2=''b'' and f_f3=''c'''
exec('select * from basis_log where '+@cond)
  • 打赏
  • 举报
回复
viva369 2008-03-27

declare @cond varchar(100)
set @cond = 'f_f1=''a'' and f_f2=''b'' and f_f3=''c'''

declare @sql varchar(max)
set @sql = 'select * from basis_log where' + @cond

exec (@sql)
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2008-03-27 01:26
社区公告
暂无公告