Тестирование пробелов в 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) = ''