2009-02-02 27 views
24

我試圖從字符串的開頭刪除字符時找到最佳做法。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) 

回答

21

那麼,第一個是更加表達你的意圖。最後顯然是雜亂的(硬編碼長度等)。我懷疑你會發現第一個&秒之間有很大的性能差異,所以我會用最簡單的 - RIGHT

當然,如果你正在做這個地段,您可以編寫一個封裝這個UDF - 然後如果你改變了主意,你只需要一個地方來改變......

4

我會用right功能它更好地展示你的意圖。 substring函數最適用於從較長字符串的中間抽取字符串。

5

右側功能+1,這是更清晰,你想要做

1

我用的是第二子串,因爲它更便於攜帶的東西。並非所有的dbms都有左和右。

+5

這將是從一個數據庫遷移到另一個數據庫時遇到的問題中最少的...... :) – Michael 2011-07-26 10:39:57