SQL SUBSTRING vs RIGHT - лучшая практика

Я пытаюсь найти наилучшую практику при удалении символов с начала строки.

В некоторых языках вы можете использовать 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)

Ответ 1

Хорошо, первое более выразительно из ваших намерений. Последнее явно беспорядочно (жестко закодированная длина и т.д.). Я сомневаюсь, что вы найдете много разницы в производительности между первым и вторым, поэтому я бы использовал самый простой - RIGHT.

Конечно, если вы делаете этот лот, вы можете написать udf, который инкапсулирует это, - тогда, если вы передумаете, у вас останется только одно место для изменения...

Ответ 2

+1 в правой функции, гораздо яснее, что вы хотите сделать

Ответ 3

Я бы использовал функцию right, поскольку она лучше показывает ваши намерения. Функция substring лучше всего используется для извлечения строк из середины более длинной строки.

Ответ 4

Я использую второй SUBSTRING, потому что он более переносимый. Не все dbms имели ВЛЕВО и ВПРАВО.