Funções de cadeia de caracteres T-SQL: diferença entre o uso de esquerda / direita e substring e comportamento estranho

Estou usando o SQL Server 2008 e 2005 (Express). Estou tentando extrair parte de uma seqüência de caracteres alfanuméricos de um campo varchar.

RIGHT(str_field, 3) gera valores nulos, masSUBSTRING(str_field, LEN(str_field)-2, LEN(str_field)) dá o valor certo.LEFT(str_field, 7) fornece os valores esperados. O que da?

Eu teria pensado queRIGHT(str_field, 3) eSUBSTRING(str_field, LEN(str_field)-2, LEN(str_field)) são expressões equivalentes.

questionAnswers(1)

yourAnswerToTheQuestion