I was trying out a query and it was returning an error which I cannot explain. (5 th query ).
Can someone help me understand what is causing the error.  
DROP TABLE #temp  
SELECT * INTO #temp  
FROM  
(  
SELECT 'A_100' Col  
union all  
SELECT 'A_101'   
union all  
SELECT 'A_102'  
union all  
SELECT 'A_103'  
union all  
SELECT 'A_104'  
union all  
SELECT 'B_104'  
) a  
-- 1
SELECT * FROM #temp where col like 'A%'
     
-- 2
SELECT replace(col,'A_','')  FROM #temp where col like 'A%'
     
--3
SELECT cast(replace(col,'A_','') as INT) FROM #temp where col like 'A%'     
-- 4
SELECT * FROM
(
SELECT cast(replace(col,'A_','') as INT) Num
 FROM #temp a where col like 'A%'
) A
     
-- 5
SELECT * FROM
(
SELECT cast(replace(col,'A_','') as INT) Num
 FROM #temp a where col like 'A%'
) A
WHERE A.Num>102