2009-02-02 19 views
24

Estoy tratando de encontrar la mejor práctica al eliminar caracteres del inicio de una cadena.SQL SUBSTRING vs RIGHT - Mejor práctica

En algunos idiomas, puede usar MID sin un parámetro de longitud, sin embargo, en TSQL, la longitud es obligatoria.

Considerando el siguiente código, ¿cuál es la mejor práctica? (La secuencia hexadecimal es de longitud 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) 

Respuesta

21

Bueno, la primera es más expresiva de su intención. El último es claramente desordenado (longitud codificada, etc.). Dudo que encuentres una gran diferencia de rendimiento entre el primer &, así que usaría el más simple: RIGHT.

Por supuesto, si usted está haciendo esto las porciones, se podría escribir una UDF que encapsula este - a continuación, si usted cambia de opinión sólo tiene un lugar para cambiar ...

4

me gustaría utilizar la función como right es mejor que muestres tu intención. La función substring se utiliza mejor para extraer cadenas del medio de una cadena más larga.

5

1 en la función correcta, es mucho más claro lo que quiere hacer

1

uso el segundo SUBSECUENCIA porque es más portátil. No todos los dbms tenían IZQUIERDA y DERECHA.

+5

Este sería el menor de sus problemas con la migración de una base de datos a otra ... :) – Michael