Я только что провёл тестирование и обнаружил кое-что интересное.
Я писал свои запросы так:
SELECT *
FROM TableA
WHERE Val IS NOT NULL
AND LEN(RTRIM(LTRIM(Val))) > 0
Но на самом деле вам не нужно проверять на ноль, все, что вам нужно сделать, это проверить длину после обрезки значения.
SELECT *
FROM TableA
WHERE LEN(RTRIM(LTRIM(Val))) > 0
Этот выбор отсеивает как пустые, так и пустые столбцы.
Как оказалось, вам не нужно обрезать значение, потому что SQL Server игнорирует конечные пробелы, поэтому все, что вам на самом деле нужно, это:
ВЫБРАТЬ *
ИЗ таблицы А
ГДЕ ЛЕН (Val)> 0