有没有办法在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 + ''''+'',''+'',''))
添加其他参数,但它是错误的。
答案 0 :(得分:4)
如果使用动态SQL,则可以。
示例:
DECLARE @Operator VARCHAR(2)
SET @Operator = '>='
EXEC('SELECT * FROM TABLE WHERE Date ' + @Operator + ' ''7/1/2017''')
正如您在示例中所看到的,在动态SQL中处理引号可能会很麻烦。虽然在你的例子中没什么大不了的。
请注意,如果没有适当的注意,动态SQL会在您的系统中打开一个漏洞,用户可能会对您的程序使用SQL Injection攻击。