我已经通过Google和Stack Overflow进行了大量搜索,如果有答案,我无法提出一个搜索查询,它可以为我提供答案。< / p>
我正在构建一个在我的ASP.net网站中使用的函数模块来处理连接到Microsoft SQL Server DB和执行查询的所有脏工作。我目前正在处理执行查询的函数,并决定允许一个可选的函数参数,它是一个SQL参数数组。
在传递给它们的可选SQL参数的函数中,我想检查传递的SQL查询以查看是否有命名参数。如果SQL查询中有命名参数,请确保确实传递了可选的SQL参数。如果SQL查询中没有命名参数,请确保没有传递任何SQL参数。例如:
SELECT * FROM MyTable WHERE ID = @TheID
→函数调用必须具有SQL参数。SELECT GETDATE()
→函数调用必须没有SQL参数。 我的问题是 “搜索”字符串的最佳方式是查询命名参数的SQL查询(不知道名称参数)。我警惕只是在字符串中搜索'@'字符,因为我在某处读到了可能有一个以该字符命名的列(例如[name@domain]
)。也许我可以使用正则表达式搜索'='后跟任意数量的空格后跟'@'?
答案 0 :(得分:0)
没有理由不能使用@
字符。名称中不应该有@
,因为它是变量而不是列。您不能拥有名为@(var@iable)
结帐sp_executesql。这是一个很好的例子,可以做一些非常类似于你想要做的事情
答案 1 :(得分:0)
对于.net,
function checkQuery (byVal myQuery As String)
return not instr(myQuery,"@") == 0
end function
如果您的查询包含“@”
,则返回true