Используется двойной минус для фильтрации только по желаемому диапазону символов
Любой символ за пределами желаемого диапазона дает значение true из LIKE.Если строка состоит только из символа в желаемом диапазоне, LIKE выдает false.Тогда еще один НЕ
WHERE
SomeCol NOT LIKE '%[^a-z0-9-'']%'
Примечание: здесь я использовал одинарную кавычку
По умолчанию SQL Server не учитывает регистр.При необходимости добавьте предложение COLLATE
SomeCol COLLATE Latin1_General_CI_AS NOT LIKE '%[^a-z0-9-']%'
или измените диапазон
SomeCol NOT LIKE '%[^a-zA-Z0-9-']%'
или, если вы хотите включить ä = a
SomeCol COLLATE Latin1_General_CI_AI NOT LIKE '%[^a-z0-9-']%'