Согласно документации:
Возвращает количество символов указанного строкового выражения, исключая конечные пробелы.
Существует похожая функция с именем DataLength, с которой вам следует ознакомиться.
create table #temp(foo varchar(10))
insert into #temp select ''
insert into #temp select 'abc'
insert into #temp select ' '
select len(foo), DataLength(foo) from #temp where foo = ' '
drop table #temp
Пробелы также удалены для сравнения. Вы можете приспособить это, преобразовав данные в varbinary и сравнив их таким образом. Если вы сделаете это, я бы оставил исходное сравнение в одиночку (по соображениям экономии).
create table #temp(foo varchar(10))
insert into #temp select ''
insert into #temp select 'abc'
insert into #temp select ' '
select len(foo), DataLength(foo)
from #temp
where foo = ' '
and Convert(varbinary(8), foo) = Convert(VarBinary(8), ' ')
drop table #temp