【问题标题】:Is it possible to use wildcards in SQL Server Stored Proc parameters?是否可以在 SQL Server 存储过程参数中使用通配符?
【发布时间】:2015-12-30 15:47:58
【问题描述】:

我正在使用带有多个参数的存储过程。但是,事实证明,对于其中一个参数,我需要遍历一个项目列表并多次调用 SP。但是当我向 SP 传递该类型的所有可能值时,通过通配符说“全部获取”来绕过参数似乎更有效(也更简单)。

是否可以这样做,例如使用“*”或“%”之类的?

理论上(基于我所做的研究),“%”应该可以工作,但在我的情况下,它不会返回任何记录。我做错了什么,这段代码:

. . .
new SqlParameter()
{
    ParameterName = "@Member",
    SqlDbType = SqlDbType.VarChar,
    Value = '%'
},
. . .

?

【问题讨论】:

  • 只需通过参数传递 NULL 并使用 WHERE col = ISNULL(@param, col) 或获得更高性能 WHERE col = @param or @param IS NULL
  • 这看起来像是我需要添加到 SP 中的东西,但我不能 - 那不是我的域(没有双关语)。
  • 为什么实际上使用一个参数,为什么不直接改变存储的过程来使用通配符呢? - 啊我看到你的其他评论,你被阻止这样做......
  • 嗯,% 一个通配符它与LIKE operator一起使用。但如果这没有发生,它就不会起作用。
  • 是的,我只是要评论一下,存储过程必须使用类似于...LIKE @Member.... 的内容,请参阅此处的答案以获取示例:stackoverflow.com/questions/10601318/…

标签: sql-server stored-procedures wildcard sqlparameter sqldbtype


【解决方案1】:

没有。如果无法修改存储过程代码,则无法将任何内容作为参数传递,就像通配符一样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2010-12-21
    相关资源
    最近更新 更多