24 Stimmen

SQL SUBSTRING vs. RIGHT - Best Practice

Ich versuche herauszufinden, wie man am besten vorgeht, wenn man Zeichen vom Anfang einer Zeichenkette entfernt.

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

Was ist angesichts des folgenden Codes die beste Vorgehensweise? (Die Hex-Zeichenkette hat eine 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)

21voto

Marc Gravell Punkte 970173

Nun, die erste ist aussagekräftiger für Ihre Absicht. Die letzte ist eindeutig chaotisch (fest kodierte Länge usw.). Ich bezweifle, dass Sie einen großen Leistungsunterschied zwischen der ersten und der zweiten Variante feststellen werden, daher würde ich die einfachste Variante verwenden. RIGHT .

Wenn Sie dies häufig tun, könnten Sie natürlich eine udf schreiben, die dies kapselt - dann haben Sie, wenn Sie Ihre Meinung ändern, nur eine Stelle zum Ändern...

5voto

SQLMenace Punkte 128184

+1 auf die richtige Funktion, ist es viel klarer, was Sie tun wollen

4voto

Andrew Hare Punkte 332190

Ich würde die right Funktion, da sie Ihre Absicht besser verdeutlicht. Die substring Funktion eignet sich am besten zum Extrahieren von Zeichenfolgen aus der Mitte einer längeren Zeichenfolge.

2voto

Yada Punkte 28791

Ich verwende den zweiten SUBSTRING, weil er besser übertragbar ist. Nicht alle Dbms hatten LEFT und RIGHT.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X