2009-02-02 7 views
24

J'essaie de trouver la meilleure pratique pour supprimer des caractères au début d'une chaîne.SQL SUBSTRING vs RIGHT - Meilleure pratique

Dans certaines langues, vous pouvez utiliser MID sans paramètre de longueur. Cependant, dans TSQL, la longueur est requise. En considérant le code suivant, quelle est la meilleure pratique? (La chaîne hexadécimale est de longueur variable)

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) 

Répondre

21

Eh bien, le premier est plus expressif de votre intention. Le dernier est clairement désordonné (longueur codée en dur etc.). Je doute que vous trouverez beaucoup de différence de performance entre le premier & deuxième, donc j'utiliserais le plus simple - RIGHT.

Bien sûr, si vous faites cela beaucoup, vous pouvez écrire un udf qui encapsule cela - alors si vous changez d'avis, vous avez un seul endroit pour changer ...

4

j'utiliser la fonction right comme cela montre mieux votre intention. La fonction substring est mieux utilisée pour extraire des chaînes à partir du milieu d'une chaîne plus longue.

5

+1 sur la bonne fonction, il est beaucoup plus clair ce que vous voulez faire

1

J'utilise la deuxième SUBSTRING, car il est plus facile à transporter. Tous les dbms n'avaient pas GAUCHE et DROIT.

+5

Ce serait le moindre de vos problèmes avec la migration d'une base de données à l'autre ... :) – Michael

Questions connexes