Prova ad usare IF invece di IFNULL.

SELECT id,nome FROM tab
WHERE IF(col_1 = 'si', col_1 = 'si', id = 7) ";

IFNULL valuta se la colonna di espr1 e' NULLA oppure NO, Quindi se espr1 col_1 contiene qualsiasi cosa, anche vuota, rende sempre espr1.