2009-02-02 9 views
24

Ich versuche, die beste Vorgehensweise beim Entfernen von Zeichen vom Anfang einer Zeichenfolge zu finden.SQL SUBSTRING vs RECHTS - Best Practice

In einigen Sprachen können Sie MID ohne einen Längenparameter verwenden, in TSQL ist die Länge jedoch erforderlich.

Mit Blick auf den folgenden Code, was ist die beste Praxis? (Die hexadezimale Zeichenfolge ist variable Länge)

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) 

Antwort

21

Nun, die erste ist Ausdruck Ihrer Absicht. Der letzte ist eindeutig chaotisch (hart codierte Länge usw.). Ich bezweifle, dass Sie viel Leistungsunterschied zwischen der ersten & Sekunde finden würde, so würde ich die einfachste verwenden - RIGHT.

Natürlich, wenn Sie diese viel tun, könnten Sie eine UDF schreiben, die diese kapselt - dann, wenn Sie Ihre Meinung ändern Sie nur einen Ort haben sich ändern ...

4

Ich würde verwenden, um die right Funktion als Es zeigt besser deine Absicht. Die substring-Funktion wird am besten zum Extrahieren von Zeichenfolgen aus der Mitte einer längeren Zeichenfolge verwendet.

5

+1 auf der rechten Funktion ist es viel klarer, was Sie

1

ich das zweite SUBSTRING verwenden tun wollen, weil es mehr tragbar ist. Nicht alle dbms hatten LINKS und RECHTS.

+5

Dies wäre das kleinste Problem bei der Migration von einer Datenbank in eine andere ... :) – Michael