当前位置: 代码迷 >> Sql Server >> SQL如何把字段内容作为查询条件
  详细解决方案

SQL如何把字段内容作为查询条件

热度:68   发布时间:2016-04-24 10:21:32.0
SQL怎么把字段内容作为查询条件
遇到一个情况,一个查询语句,查询条件之一是其中一个字段的内容:
SELECT Fcode,Fnumber,FitemRangeSQL FROM  A  where Fcode='A001'
结果为:
 A001,2, ( Fcode in ('A001','A002','A003') ) ,
但还需要把 FitemRangeSQL 的内容作为查询条件之一。
如果 where 条件为  Fcode in ('A001','B001')  查询
select  Fcode,Fnumber,FitemRangeSQL FROM  A  where   Fcode in ('A001','B001')   and   Fcode in ('A001','A002','A003')
怎么把FitemRangeSQL 字段内容作为查询条件放进去啊。

  
------解决方案--------------------
declare @sql varchar(200)
declare @re varchar(50)
set @re=(SELECT  top  1 FitemRangeSQL FROM  A  where Fcode='A001')
set @sql='select  Fcode,Fnumber,FitemRangeSQL FROM  A  where 
  Fcode in (''''A001'''',''''B001'''')   and   Fcode in (''''A001'''',''''A002'''',''''A003'''')
  and '+@re
 exec (@sql)

------解决方案--------------------
引用:
如果是多笔记录呢? 例如:'A001' 对应FitemRangeSQL 内容为( Fcode in ('A001','A002','A003') )  ,B001  对应FitemRangeSQL 内容为( Fcode in ('B001','B002') )  。


DECLARE @Sql VARCHAR(MAX)
SELECT @Sql=ISNULL(@Sql,'')+' OR '+FitemRangeSQL FROM A WHERE Fcode IN('A001','B001') GROUP BY FitemRangeSQL
DECLARE @sql1 VARCHAR(MAX)
SET @sql='SELECT  Fcode,Fnumber,FitemRangeSQL FROM  A  WHERE 1=0 '+@Sql
 EXEC (@sql1)

  相关解决方案