![](/img/trans.png)
[英]What is the best way to store historical data in SQL Server 2005/2008?
[英]What is the best way to do a wildcard search in sql server 2005?
所以我有一个stored procedure
,它接受像1234567890
这样的产品代码。 我想为这些产品提供通配符搜索选项。 (即123456*
),并返回所有匹配的产品。 做这个的最好方式是什么?
我过去曾使用过类似以下内容的东西:
SELECT @product_code = REPLACE(@product_code, '*', '%')
然后做一个LIKE
上搜索product_code
场,但我觉得它可以得到改善。
您已经在做的事就是尽力而为。
您可以尝试的一种优化方法是确保您允许的列上都有索引。 SQL Server仍将需要对通配符搜索进行全面扫描,但是它将仅针对特定索引而不是整个表。
与往常一样,在进行任何更改之前和之后检查查询计划是一个好主意。
这取决于,但您可能要考虑:
默认情况下,始终寻找子字符串。 例如,如果用户输入“ 1234”,则您搜索:
WHERE产品,例如“%1234%”
允许用户完全控制。 即简单地接受他们的输入并将其传递给LIKE
子句。 这意味着他们可以提出自己的自定义搜索。 仅当您的用户有兴趣学习时,此功能才有用。
像@input这样的产品
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.