Тестирование пробелов в SQL Server

У меня есть некоторые пустые значения в моей таблице, и я не могу их поймать в инструкции IF.

я пробовал

IF @value = '' и if @value = NULL и ни один из них не улавливает пустые значения. Есть ли способ проверить, является ли varchar полностью пробелом?

АГА! Оказывается, я тестировал ошибку. Благодарю.

Для сравнения с NULL используйте ключевое слово IS NULL.

 --Generic example: SELECT * FROM MY_TABLE WHERE SOME_FIELD IS NULL; --Instead of SELECT * FROM MY_TABLE WHERE SOME_FIELD = NULL; 
 ltrim(rtrim(isNull(@value,''))) = '' 

(LTRIM (RTRIM (@Value)) = '' должен делать трюк.

если length (@value) = 0 или @ значение null

где length (rtrim (ltrim (yourcolumnname))) = 0 ИЛИ имя_колонка равно null

Вместо того, чтобы выполнять чрезмерную манипуляцию строкой с помощью LTRIM AND RTRIM , просто RTRIM поиск выражения для первого «не-пространства».

 SELECT * FROM [Table] WHERE COALESCE(PATINDEX('%[^ ]%', [Value]), 0) > 0 

Я только что проверил и узнал что-то интересное. Я писал свои запросы так:

 SELECT * FROM TableA WHERE Val IS NOT NULL AND LEN(RTRIM(LTRIM(Val))) > 0 

Но на самом деле вам не нужно проверять значение null, все, что вам нужно сделать, это проверить длину после обрезки значения.

 SELECT * FROM TableA WHERE LEN(RTRIM(LTRIM(Val))) > 0 

Это позволяет вырезать нули, а также любые столбцы с пробелом.

Как оказалось, вам не нужно обрезать значение, потому что SQL Server игнорирует конечные пробелы, поэтому все, что вам действительно нужно, это: SELECT * FROM TableA WHERE LEN (Val)> 0

У вас могут быть поля с несколькими пробелами (''), поэтому вы получите лучшие результаты, если вы обрезаете это:

 where ltrim(yourcolumnname) = '' 
Давайте будем гением компьютера.