使用Microsoft SQL,无论间距如何,搜索字符串的最有效方法是什么

时间:2015-08-31 23:29:51

标签: sql sql-server sql-server-2008

目前我正在使用if语句并列出所有可能的组合。

IF string = 'L1' OR string = 'L 1' then do something.

我想知道是否有更好的方法?我知道我可以使用replace函数,但是在数据库中超过100,000行会有效率。它用于标量函数

2 个答案:

答案 0 :(得分:4)

如果您有string的索引,则:

where string in ('L1', 'L 1')

可以使用索引,是最有效的方法。

否则,

where replace(string, ' ', '') = 'L1'

似乎最方便。

但是,我会建议您修复数据库中的字符串。实际上,您可以使用计算列并在其上添加索引:

alter table t add stringNoSpaces as (replace(string, ' ', ''))

create index idx_t_stringNoSpaces on t(stringNoSpaces)

然后条件:

where stringNoSpace = 'L1'

将使用索引,并愉快地高效。并且,只要string列被修改,SQL Server就会维护索引。

答案 1 :(得分:0)

如果要查找多个单词组合并且可以处理一些延迟,请考虑使用SQL全文搜索:https://msdn.microsoft.com/en-us/library/ms142571.aspx

使用UDF

对性能产生负面影响非常容易