在SQL Server(2008)上,如果我想过滤以某事开头的字符串字段,那么最好的方法是什么?

Mat*_*ews 7 sql sql-server-2008 sql-like

在几个SQL查询中,我需要检查字段是否以字符开头.有几种方法可以做到,哪一种方法在性能/标准方面更好?

我经常使用

tb.field LIKE 'C%'
Run Code Online (Sandbox Code Playgroud)

但我也可以用

LEFT(LTRIM(tb.Field),1) = 'C'
Run Code Online (Sandbox Code Playgroud)

我很清楚每种情况的用途,但不是在性能方面.

Chr*_*tow 6

我会选择第一个LIKE C%,如果有一个索引,它将使用该字段的索引,而不是必须进行全表扫描.

如果您确实需要LTRIM在查询中包含空白修剪,则可以使用该值创建一个持久计算列LEFT(LTRIM(tb.Field), 1)并在其上放置索引.