2008-11-28 3 views
4

В SQL, Как мы делаем проверку на фильтрацию всей строки, содержащей данные столбца, является пустой или пустой?
Для examileКак я могу отфильтровать строки, содержащие конкретный столбец с нулевыми или пустыми данными в SQL?

Select Name,Age from MEMBERS 

Нам нужно проверить имя должно не равно нулю или пусто.

+1

Попробуйте указать, какой RDBMS вы используете - и выбрать ответ :) – 2009-12-30 06:25:10

ответ

8

Это будет работать во всех здравомыслящих базах данных (подмигивать, подмигнуть) и возвращает строки, для которых имя не является нулевым или пустым

select name,age from members where name is not null and name <> '' 
+0

Это не работает для Oracle (который является немного странным о пустых строках и нулях, правда) , – 2008-11-28 10:31:41

0

nvl (Name, 'some dumb string'), это вернет Имя, если Имя не является нулевым и отличается от '' (oracle, не знаю других). Он будет равен «некоторой немой строке», если он равен нулю или равен «».

1

Выберите Имя, Возраст от ЧЛЕНОВ, где имя является пустым или именем = «»

вы можете найти и узнать больше из http://www.w3schools.com/sql/default.asp

+0

Я думаю, вы имеете в виду, где имя не равно null И имя! = ''; не так ли? – Ben 2008-11-28 14:26:47

0

в зависимости от используемой базы данных; попробуйте Выберите Имя, Возраст от пользователей где имя IS NOT NULL

, если вам нужно фильтровать otherway Выберите Имя, Возраст от членов где имя IS NULL

Некоторые РСУБД лечения enpty строка отличается от нуля, и вам нужно будет добавить; Выберите Имя, Возраст от членов где Name IS NOT NULL или имя <> ''

+0

«Выберите имя, возраст от членов, где имя НЕ ЯВЛЯЕТСЯ ИЛИ имя <> ''" будет возвращать строки, где name = '' на СУБД, которые обрабатывают NULL и '' по-другому, потому что для них «IS NOT NULL! – 2008-11-28 10:35:03

+0

ALL rdbms SHOULD обрабатывают NULL как отличные от строки с нулевой длиной, потому что они * * разные. Пустая строка означает, что у вас есть строка, но она равна нулю, нуль означает отсутствие данных. Это не факультативно, именно в спецификации работы RDBMS – Cruachan 2008-11-28 10:50:44

4

Для СУБД, что лечить '' в качестве значения (не нуль), запрос Винко работает:

select name,age from members where name is not null and name <> '' 

Для Oracle, которая лечит «» как нулевые, тх выше не работает, но это делает:

select name,age from members where name is not null 

Я пытался думать о «СУБД агностик» решения, но не удался - в основном из-за различные оператор конкатенации/функция используемые различными СУБД!

Смежные вопросы