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 имели ВЛЕВО и ВПРАВО.