2

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

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

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

然后LIKE在现场进行搜索product_code,但我觉得它可以改进。

4

2 回答 2

1

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

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

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

于 2008-11-26T16:10:40.203 回答
0

一些随机的想法

这取决于,但您可能需要考虑:

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

    WHERE 产品如“%1234%”

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

    WHERE 产品如@input

于 2008-11-26T17:04:02.090 回答