A ISNUMERICfunção tem algum comportamento inesperado. A documentação do MSDN diz: ISNUMERICretorna 1 quando a expressão de entrada é avaliada para um tipo de dados numérico válido; caso contrário, ele retornará 0. Os tipos de dados numéricos válidos incluem o seguinte: int, bigint, smallint,...