ALTERproc csp_x_HotelSearch @Cnamevarchar(100), --城市 @BPvarchar(100), --价格起 @EPvarchar(100), --价格止 @Enamevarchar(200), --酒店名 @Estarvarchar(50) --星级 as declare@sqlvarchar(1000) declare@conditionvarchar(500) set@sql='select a.Enum,b.Ifullname,c.Elevel,d.Cname,a.PStitle,a.PSprice,e.UTid from dbo.at_ProductService_Eid a left join dbo.at_Info_Eid b on a.Enum=b.Enum left join dbo.at_EnterpriseUser c on a.Enum=c.Enum left join dbo.at_City d on b.Cid=d.Cid left join dbo.at_Type_CPid e on a.T_UTid=e.UTid where a.IsDelete=0 and c.Eisfreeze=0 and e.CPid in (select f.CPid from dbo.at_ColumnProductService_Did f where f.ETid=2) and (d.Cname like ''%'+@Cname+'%'' or '+@Cname+' is null) and (b.Ifullname like ''%'+@Ename+'%'' or '+@Ename+' is null) and (c.Elevel >='+@Estar+' or '+@Estar+' is null) and ' set@condition= case when@BP!=''and@EP!=''then'left(a.PSprice,len(a.PSprice)-1) between '+@BP+' and '+@EP when@BP!=''and@EP=''then'left(a.PSprice,len(a.PSprice)-1) >= '+@BP when@EP!=''and@BP=''then'left(a.PSprice,len(a.PSprice)-1) <= '+@EP end set@sql=@sql+@condition exec(@sql)
3、程序里动态SQL的方法:
string sql ="select a.Enum,b.Ifullname,c.Elevel,d.Cname,a.PStitle,a.PSprice,e.UTid from dbo.at_ProductService_Eid a "; sql +="left join dbo.at_Info_Eid b on a.Enum=b.Enum "; sql +="left join dbo.at_EnterpriseUser c on a.Enum=c.Enum "; sql +="left join dbo.at_City d on b.Cid=d.Cid "; sql +="left join dbo.at_Type_CPid e on a.T_UTid=e.UTid "; sql +="where a.IsDelete=0 and c.Eisfreeze=0 and "; sql +="e.CPid in (select f.CPid from dbo.at_ColumnProductService_Did f where f.ETid=2) "; try GridView1.DataBind();