如何在sql server中将字符串转换为查询

时间:2011-10-25 05:20:02

标签: sql sql-server sql-server-2008

如何添加我们拥有And子句的字符串。但是当我们应用查询此字符串的字符串将被视为查询并满足所有条件和 我有一个查询: -

Declare @WhereQuery varchar(max)

SET @WhereQuery='class=''BCA'' and RollNo=10 AND ID IN (SELECT ID FROM StudentMaster WHERE MARKS > 50)'

SELECT  * into #TempTable1
from StudentMaster 
where @WhereQuery

我也不想使用execute或exec函数来运行此查询。 我将添加如上所述的查询提及字符串,但这将无法正常工作。 我在where子句被视为字符串之后添加的变量,但我希望此字符串被视为Query。请帮忙。我也不想使用execute或exec函数来运行此查询。

2 个答案:

答案 0 :(得分:1)

以下方法运行正常。但要特别小心,因为如果用户提供输入,它很容易被sql注入。

create table #TempTable1 (.....)

Declare @selectQuery varchar(max)
set @selectQuery = 'SELECT * into #TempTable1 from StudentMaster '

Declare @WhereQuery varchar(max)

SET @WhereQuery='where class=''BCA'' and RollNo=10 AND ID IN (SELECT ID FROM StudentMaster WHERE MARKS > 50)'

exec (@selectQuery + @WhereQuery)

答案 1 :(得分:0)

如果您希望运行动态SQL, 可以使用EXEC或sp_exeutesql

如果你想要使用EXEC,那么写下非动态查询:

SELECT  * into #TempTable1
from StudentMaster 
where class='BCA' and RollNo=10 AND ID IN (SELECT ID FROM StudentMaster WHERE MARKS > 50)