I need some help trying make this LIKE
statement a little more elegant and efficient. It performs how I'd expect it to, but it's very slow, even on small data sets. I am using SQL-Server 2016 with SSMS 2017 on a win 10 machine. Thanks in advance!
where (a.Description like '% ' + @event + ' %'
or a.Description like '% ' + @event + '.'
or a.Description like '% ' + @event + '.%'
or a.Description like '% ' + @event + ',%'
or a.Description like '% ' + @event + ';%'
or a.Description like '%' + @event + '/%'
or a.Description like '%/' + @event + '%'
or a.Description like '% ' + @event
or a.Description like @event + ' %'
or a.Description like @event
)
@event is just a varchar
like 'Death' or 'Tripped'. If you have a better approach, by all means, school me!
T-SQL supports character classes in LIKE
so you can simplify:
where (a.Description like '%[ /]' + @event + '[ .,;/]%'
or a.Description like '%[ /]' + @event
or a.Description like @event + '[ .,;/]%'
or a.Description like @event
)
If you are willing to accept any non-alphabetical separators (what about digits) you can do something like:
where (a.Description like '%[^a-z0-9]'+@event+'[^a-z0-9]%'
or a.Description like @event+'[^a-z0-9]%'
or a.Description like '%[^a-z0-9]'+@event
or a.Description like @event
)