(MS)SQL执行查询,其中包含条件的附加varchar / text

时间:2013-10-14 09:49:32

标签: sql sql-server select

嗨,大家好像是可以在SQL中使用。

declare a as varchar(20)
set a = 'ID = 34 and ID = 22'

select * from something where ID = 1 and a

3 个答案:

答案 0 :(得分:2)

您可以使用命令exec - 将字符串连接到一个,然后运行该字符串的SQL查询。

所以在你的情况下,它将是:

declare @a varchar(20)
set @a = 'ID = 34 and ID = 22'
exec ('select * from something where ID = 1 and ' + @a)

请注意SQL注入。

答案 1 :(得分:2)

是的,您可以使用EXEC

declare @a as varchar(20)
set @a = 'ID = 34 and ID = 22'

EXEC ('select * from something where ID = 1 and ' + @a)

警告:由于SQL injection,这种类型的连接SQL查询存在安全风险。

答案 2 :(得分:1)

将它们放入表值(甚至是临时表)并加入它们。你甚至可以使用索引。 (虽然有一些值,索引可能不会有太多帮助!)

避免sql注入的所有可能的安全性并发症,并且通常更好。

DECLARE @ids TABLE (ID INT PRIMARY KEY)

INSERT @ids VALUES (1),(2)

SELECT s.*
FROM
    someTable AS s
    JOIN @ids AS i ON i.ID = s.ID

检查用户定义的表类型,以便更好地将列表传递给存储过程。

另请查看此页面,了解权威对此类问题的回答:http://www.sommarskog.se/arrays-in-sql.html