ORA 01722: Invalid Number caused by different comparison
Expressions in SELECT evaluated after filter[s] in WHERE applied. So if phones for records with RATING &lt;1 can be converted to number, you don't have errors. Simplified example : 

SELECT 
CASE WHEN n1=1 THEN 'a' ELSE 'b' END AS test_str
FROM 
(
SELECT '1a' AS n1 , 0 AS n2 FROM dual
UNION ALL
SELECT '1' AS n1 , 1 AS n2 FROM dual
)
x
WHERE n2 =0 -- gives an error
-- WHERE n2 =1 -  runs fine