有没有一种方法可以在T-SQL中对算术运算符(<,>,=,> =,<=)进行参数化?
像这样:
DECLARE @Operator
SET @Operator = '>='
SELECT *
FROM Table
WHERE Date @Operator '7/1/2017'
另外,我正在测试使用functions添加其他参数EXEC('SELECT SiteLongName, * FROM Reporting.Survey_Details WHERE CallDate ' + @Operator + '''7/1/2017''' + 'and SiteLongName in (select value from dbo.FnSplit(''' + @Site + ''''+'',''+'',''))
,但这是错误的。
如果使用动态SQL,则可以。
范例:
DECLARE @Operator VARCHAR(2)
SET @Operator = '>='
EXEC('SELECT * FROM TABLE WHERE Date ' + @Operator + ' ''7/1/2017''')
在示例中可以看到,在动态SQL中处理引号可能很麻烦。尽管在您的示例中这没什么大不了的。
请注意,如果没有适当的注意,动态SQL就会在系统中打开一个漏洞,用户可以在该漏洞中对程序使用SQL Injection攻击。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句