SQL SUBSTRING vs RIGHT - Лучшая практика - PullRequest
24 голосов
/ 02 февраля 2009

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

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

Ответы [ 4 ]

21 голосов
/ 02 февраля 2009

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

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

5 голосов
/ 02 февраля 2009

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

4 голосов
/ 02 февраля 2009

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

2 голосов
/ 03 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...