Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Исключить пустые строки  [new]
VIT2708_
Guest
Подскажите как исключить пустые строки при запросе

select * from Test where field1 is not null or len(field1) > 0


Почему то такой запрос не работает, он исключает поля с null но пропускает пустые поля

Проблема в том что например в поле field1 может кроме null еще и пустой

спасибо.
18 фев 15, 15:46    [17282427]     Ответить | Цитировать Сообщить модератору
 Re: Исключить пустые строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
VIT2708_,

что такое "пустой" в Вашем понимании?
Аналог Вашего запроса:
select * from Test where field1>''
18 фев 15, 15:50    [17282460]     Ответить | Цитировать Сообщить модератору
 Re: Исключить пустые строки  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4262
VIT2708_
Подскажите как исключить пустые строки при запросе

select * from Test where field1 is not null or len(field1) > 0


Почему то такой запрос не работает, он исключает поля с null но пропускает пустые поля

Проблема в том что например в поле field1 может кроме null еще и пустой

спасибо.


Потому что выполняется условие
field1 is not null
.
Пустая строка это не NULL!
18 фев 15, 15:56    [17282518]     Ответить | Цитировать Сообщить модератору
 Re: Исключить пустые строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
SQL2008
VIT2708_
Подскажите как исключить пустые строки при запросе

select * from Test where field1 is not null or len(field1) > 0



Почему то такой запрос не работает, он исключает поля с null но пропускает пустые поля

Проблема в том что например в поле field1 может кроме null еще и пустой

спасибо.


Потому что выполняется условие
field1 is not null

.
Пустая строка это не NULL!
Не обратил внимание, что у него OR
Тогда мой запрос - не аналог.
18 фев 15, 15:58    [17282535]     Ответить | Цитировать Сообщить модератору
 Re: Исключить пустые строки  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
where NULLIF(field1, '') IS NOT NULL

Но все равно коряво
18 фев 15, 16:01    [17282567]     Ответить | Цитировать Сообщить модератору
 Re: Исключить пустые строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Maxx
where NULLIF(field1, '') IS NOT NULL


Но все равно коряво
А чем field1>'' не устроил? SARGable, между прочим.
18 фев 15, 16:04    [17282587]     Ответить | Цитировать Сообщить модератору
 Re: Исключить пустые строки  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
iap,

меня всем устроил.. яж написал как вариант, не более
ТС -у для проверки

declare @t table (n varchar(10))
insert into @t (n) values (NULL),('xxx'),('')

-- 
select * from @t where n>''
--
select * from @t where NULLIF(n, '') IS NOT NULL
--
select * from @t where n IS NOT NULL or LEN(n)>0
18 фев 15, 16:12    [17282648]     Ответить | Цитировать Сообщить модератору
 Re: Исключить пустые строки  [new]
Навеяло вопросом
Guest
Навеяло вопросом. Вот такой вот запрос:
select *
from Test 
where '   ' = ' '
выведет все строки. Т.е. строки с разным набором пустых символов эквивалентны. Это опция есть такая? Или что?
18 фев 15, 16:38    [17282829]     Ответить | Цитировать Сообщить модератору
 Re: Исключить пустые строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Навеяло вопросом
Навеяло вопросом. Вот такой вот запрос:
select *
from Test 
where ' ' = ' '

выведет все строки. Т.е. строки с разным набором пустых символов эквивалентны. Это опция есть такая? Или что?
Все хвостовые пробелы отбрасываются.
By design. Надо просто знать.
18 фев 15, 16:39    [17282837]     Ответить | Цитировать Сообщить модератору
 Re: Исключить пустые строки  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Навеяло вопросом,
это поведение описано http://support.microsoft.com/kb/316626/en-us
18 фев 15, 16:56    [17282997]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить