目前我正在使用if语句并列出所有可能的组合。
IF string = 'L1' OR string = 'L 1' then do something.
我想知道是否有更好的方法?我知道我可以使用replace
函数,但是在数据库中超过100,000行会有效率。它用于标量函数
答案 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
对性能产生负面影响非常容易