I'm trying to find out the best practice when removing characters from the start of a string.
In some languages, you can use MID without a length parameter however, in TSQL the length is required.
Considering the following code, what is the best practise? (The hex string is variable length)
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)
Well, the first is more expressive of your intent. The last is clearly messy (hard-coded length etc). I doubt you'd find much performance difference between the first & second, so I'd use the simplest - RIGHT
.
Of course, if you are doing this lots, you could write a udf that encapsulates this - then if you change your mind you only have one place to change...
+1 on the right function, it is much clearer what you want to do
I would use the right
function as it better shows your intent. The substring
function is best used for extracting strings from the middle of a longer string.
I use the second SUBSTRING because it is more portable. Not all dbms had LEFT and RIGHT.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With