Я считаю, что логика, которую вы ищете, такова:
SELECT *
FROM myTable
WHERE (:type = 'Y' AND field1 IS NOT null AND field1 = 'Y')
OR (:type <> 'Y' AND (field1 IS null OR field1 <> 'Y'))
(имейте в виду, что логика короткого замыкания не гарантирована с помощью SQL ...)
Помните, что null
ни с чем не сравнимо, и лучше всего подчеркнуть тот факт, что вы на самом деле хотите (во втором случае).