A documentação da Microsoft indica que a função REPLACE() aceita e retorna apenas tipos de dados de caracteres. No entanto, estes funcionam sem erros:
SELECT REPLACE(123456, 'X', 'Y')
;
SELECT REPLACE(CAST(123456 AS INT), 'X', 'Y')
;
Além disso, você pode tratar o resultado como um INT, sugerindo que a função reteve o tipo de dados do argumento sem tentar convertê-lo:
SELECT REPLACE(123456, 'X', 'Y') / 3
;
O que não está sendo declarado na documentação da Microsoft?