I am facing an error even if I use numeric value in my outer query.
IF OBJECT_ID('tempdb..#TestNumeric') IS NOT NULL
BEGIN
    DROP TABLE #TestNumeric
END
CREATE TABLE #TestNumeric (ids INT, Valu NVARCHAR(50))
INSERT INTO #TestNumeric 
SELECT 1, '12345' UNION ALL
SELECT 1, '234234 23423' UNION ALL
SELECT 1, '234234' 
;WITH CTE 
AS
(
  SELECT ids, Valu
         , Convert(NUMERIC(18,0),Valu) as OriginalNumValue
         , ISNUMERIC(Convert(NUMERIC(18,0), Valu) ) IsNumericTrue
  FROM  #TestNumeric 
  WHERE ISNUMERIC(Valu) = 1
        AND Valu not like '%[^0-9]%'
)
SELECT  *
FROM    CTE 
WHERE   Valu = 100
DROP TABLE #TestNumeric
If I simply remove WHERE condition then it shows only numeric values. Even if it gives error and showing other rows in read.
Why it reads other rows in outer query as I have already filtered?