【问题标题】:What is the best way to do a wildcard search in sql server 2005?在 sql server 2005 中进行通配符搜索的最佳方法是什么?
【发布时间】:2008-11-26 15:50:59
【问题描述】:

所以我有一个stored procedure,它接受像1234567890 这样的产品代码。我想为这些产品提供通配符搜索选项。 (即123456*)并让它返回所有匹配的产品。最好的方法是什么?

我过去使用过类似下面的东西:

SELECT @product_code = REPLACE(@product_code, '*', '%')

然后在product_code 字段上进行LIKE 搜索,但我觉得它可以改进。

【问题讨论】:

  • 我想不出更好的方法。这样做有问题吗?

标签: sql sql-server-2005 search wildcard


【解决方案1】:

你已经在做的就是你能做到的最好的。

您可能会尝试的一种优化是确保在您允许的列上有一个索引。 SQL Server 仍需要对通配符搜索进行全面扫描,但它只会针对特定索引而不是整个表。

与往常一样,在更改前后检查查询计划是个好主意。

【讨论】:

    【解决方案2】:

    一些随机的想法

    视情况而定,但您可能需要考虑:

    • 默认情况下始终查找子字符串。例如如果用户输入“1234”,你搜索:

      WHERE 产品如“%1234%”

    • 允许用户完全控制。即简单地接受他们的输入并将其传递给LIKE 子句。这意味着他们可以提出自己的自定义搜索。这仅在您的用户有兴趣学习时才有用。

      像@input 这样的产品

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 2011-03-20
      • 2013-08-01
      • 2010-09-18
      • 1970-01-01
      • 2012-03-29
      相关资源
      最近更新 更多