• This is because you are passing in a valid money data type so this will return true

    from BOL

    ISNUMERIC returns 1 when the input expression evaluates to a valid integer, floating point number, money or decimal type; otherwise it returns 0. A return value of 1 indicates that expression can be converted to at least one of the numeric types.

    I consider ISNUMERIC to be a slightly misleading and possbile dangerous function to use when not fully understood. It is different than a function that will tell you wheter a value contains only numbers and nothing else.

    A better what to go about this could be to use PATINDEX, this will only return true where the column contains only Numbers

    DECLARE @profile CHAR(10)

    IF PATINDEX('%[^0-9]%', '£123432345') = 0

    SET @profile = 'NUMBER'

    ELSE

    SET @profile = 'CHAR'

    SELECT @profile

    Note: this is not a pefect example as it will dissallow numbers with a decimal place (.) however you can modify the PATINDEX to meet your business requirements