So I just spent 5 hours troubleshooting a problem which turned out to be due not only to the old unreliable ISNUMERIC but it looks like my problem only appears
ISNUMERIC
For SQL Server 2005 and above.... take advantage of try/catch...
declare @test varchar(10), @num decimal select @test = '0123A' begin try select @num = cast(@test as decimal) print '1' end try begin catch print '0' end catch
prints 0.
Change @test = '01234' or @test = '01234.5' and it prints 1.