我正在尝试从字符串开头删除字符时找出最佳实践。
在某些语言中,可以使用不带长度参数的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-然后,如果您改变主意,只有一个地方可以更改...