para não ficar no ar : ** qual ** é o characterset do banco "win32" e o do banco "win64" ??? Pois os substrs estão retornando um caracter só, a única maneira que eu vejo de dar estouro dum valor de um caracter só numa variável CHAR(1) - aonde é reservado 1 byte para essa string - é se o banco "win64" estiver usando um characterset aonde cada caracter não-base ascii (ie, acentos e quetais) ocupa mais de um byte , como UTF, AL32, ou quetais... Veja lá se não é isso, Enormes chances de ser...
[]s Chiappa