LEFT 与 CHARINDEX 用于匹配 T-SQL 中字符串的开头

Bas*_*ase 6 sql-server string-searching

我想匹配WHERE子句中字符串的开头。虽然我认识到数据库性能通常取决于底层数据结构,但是否有最佳实践来做到这一点?是否有一种选择总是优于其他选择?

我想避免,LIKE因为我认为它的效率低于LEFTor CHARINDEX。据我所知,我的选择如下。欢迎其他建议:

DECLARE @MyField as varchar(10)
SET @MyField = 'HELLOWORLD'
SELECT 1 WHERE @MyField LIKE 'HELLO%'
SELECT 2 WHERE LEFT(@MyField, 5) = 'HELLO'
SELECT 3 WHERE CHARINDEX('HELLO', @MyField) = 1
Run Code Online (Sandbox Code Playgroud)

Ken*_*her 8

我能想到的最大的因素是,LEFT(MyField,5)CHARINDEX('HELLO',@MyField)除非索引表达式完全匹配将不会使用索引。

但是MyField LIKE 'HELLO%'将使用其中的任何索引MyField