NULL
неизвестно, и поэтому неизвестно, является ли он вашим шаблоном или нет. Вы можете легко решить эту проблему, используя:
DECLARE @user VARCHAR(5) = '%pqr%';
SELECT ... WHERE COALESCE(closed_by, '') NOT LIKE @user;
А на самом деле, чтобы быть более точным, вы, вероятно, хотите:
DECLARE @user VARCHAR(7) = '%,pqr,%';
SELECT ... WHERE COALESCE(',' + closed_by + ',', '') NOT LIKE @user;
Таким образом, если у вас позже будут данные типа 'trv,pqrs,ltt'
, он не вернет ложное срабатывание.
Однако, сказав все это, рассмотрели ли вы, как хранить это в более нормализованном виде? Хранение разделенных запятыми списков может быть очень проблематичным, и я могу заверить вас, что это не будет последней проблемой, с которой вы столкнетесь при работе с данными, структурированными таким образом.