24 Stimmen

SQL SUBSTRING vs RIGHT - Beste Praxis

Ich versuche herauszufinden, welche die beste Vorgehensweise ist, um Zeichen am Anfang eines Strings zu entfernen.

In einigen Sprachen kannst du MID ohne Angabe einer Länge verwenden, aber in TSQL ist die Länge erforderlich.

Bei Betrachtung des folgenden Codes, was ist die beste Praxis? (Die Hex-Zeichenfolge ist variabler 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, das erste drückt Ihre Absicht besser aus. Das letzte ist offensichtlich unordentlich (fest codierte Länge usw.). Ich bezweifle, dass Sie einen großen Leistungsunterschied zwischen dem ersten und dem zweiten finden würden, also würde ich das Einfachste verwenden - RIGHT.

Natürlich, wenn Sie das oft machen, könnten Sie eine UDF schreiben, die dies umschließt - dann, wenn Sie Ihre Meinung ändern, müssen Sie nur an einer Stelle ändern...

5voto

SQLMenace Punkte 128184

+1 auf die rechte Funktion, es ist viel klarer, was du tun möchtest

4voto

Andrew Hare Punkte 332190

Ich würde die right-Funktion verwenden, da sie Ihre Absicht besser zeigt. Die substring-Funktion wird am besten verwendet, um Zeichenfolgen aus der Mitte einer längeren Zeichenfolge zu extrahieren.

2voto

Yada Punkte 28791

Ich benutze den zweiten SUBSTRING, weil er portabler ist. Nicht alle Datenbankmanagementsysteme 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