我正在尝试从字符串开头删除字符时找出最佳实践。

在某些语言中,可以使用不带长度参数的MID,但是在TSQL中,长度是必需的。

考虑以下代码,最佳实践是什么? (十六进制字符串是可变长度的)

DECLARE @sHex VARCHAR(66)
SET @sHex = '0x7E260F3DA734AD4BD816B88F485CE501D843DF067C8EDCB8AC7DAD331852E04D'

PRINT RIGHT(@sHex,LEN(@sHex) -2)
PRINT SUBSTRING(@sHex,3,LEN(@sHex) -2)
PRINT SUBSTRING(@sHex,3,65535)

最佳答案

好吧,第一个更能表达您的意图。最后一个显然是困惑的(硬编码长度等)。我怀疑您会发现第一个和第二个之间的性能差异很大,所以我会使用最简单的RIGHT

当然,如果您要做的很多,您可以编写一个封装了此内容的udf-然后,如果您改变主意,只有一个地方可以更改...

08-26 22:06