Meu caro, o problema é que vc está confiando em conversão implícita : quando vc passa um número (uma expressão numérica, na verdade) pra uma função caracter, o banco é ** TOTALMENTE LIVRE ** para OU primeiro resolver a expressão (aí o 4506-3 passa a ser uma CONTA, que vai ser resolvida antes) , OU então transfromar tudo em string (caso em que a expressão numérica 4506-3 vira a string '4506-3', aí o REPLACE funciona).... Então REPITO : ** pare ** de confiar em conversão Implícita!!! Se o valor é uma string, meta aspinhas nela....
[]s Chiappa