T-SQL:使用参数作为运算符

时间:2017-07-27 16:13:10

标签: sql-server tsql

有没有办法在T-SQL中参数化算术运算符(<,>,=,> =,< =)?

这样的事情:

DECLARE @Operator 

SET @Operator = '>=' 

SELECT * 
FROM Table 
WHERE Date @Operator '7/1/2017'

另外,我正在测试使用函数EXEC('SELECT SiteLongName, * FROM Reporting.Survey_Details WHERE CallDate ' + @Operator + '''7/1/2017''' + 'and SiteLongName in (select value from dbo.FnSplit(''' + @Site + ''''+'',''+'',''))添加其他参数,但它是错误的。

1 个答案:

答案 0 :(得分:4)

如果使用动态SQL,则可以。

示例:

DECLARE @Operator VARCHAR(2)

SET @Operator = '>='

EXEC('SELECT * FROM TABLE WHERE Date ' + @Operator +  ' ''7/1/2017''')

正如您在示例中所看到的,在动态SQL中处理引号可能会很麻烦。虽然在你的例子中没什么大不了的。

请注意,如果没有适当的注意,动态SQL会在您的系统中打开一个漏洞,用户可能会对您的程序使用SQL Injection攻击。