Два делают разные вещи:
where name like '%[a-z]%'
Возвращает все имена, которые имеют символ (если параметры сортировки чувствительны к регистру, то это обязательно символ нижнего регистра).Например, '!@$;X'
будет соответствовать этому.
where name not like '%[0-9]%'
Возвращает все имена, которые не содержат цифры.Например, '!@$;'
будет соответствовать этому.
Что вы должны использовать?Вы должны использовать сравнение, которое реализует логику, которую вы хотите реализовать.