2016-08-23 2 views
0

Есть ли способ избежать пустых строк в инструкции SQL? Мой вывод:SQL избежать пустых строк

a | b | c 
1  2  3 
4 
EMPTY EMPTY EMPTY 
5 

Но я хочу:

a | b | c 
1 2 3 
4 
5 
+2

'где <>«EMPTY»&& b <> 'EMPTY' && c <> 'EMPTY''? или что-то еще? –

+1

Это текст пустой или пустой? если null указывает 'где a не является нулевым, а b не является нулевым, а c не является нулевым', но для уверенности нам нужно будет видеть примерные данные и ожидаемые результаты и ваш текущий запрос. Возможно, вам удастся исключить nulls/empty для чего-то неправильного в текущем запросе. Например, внешнее объединение и столбцы ABC поступают из таблицы, возвращая только согласованные записи. возможно, вместо этого следует использовать внутреннее соединение? – xQbert

ответ

1

Если значение пусто или, если это null две разные вещи, так что я не уверен, который вы ищете.

Если NULL

SELECT * FROM table WHERE a IS NOT NULL OR b IS NOT NULL OR c IS NOT NULL; 

Если пусто

SELECT * FROM table WHERE a <> '' OR b <> '' OR c <> ''; 
+0

сделайте это на шаг дальше и покажите, как вы можете использовать ISNULL() или COALESE() для сравнения empty & null в одно и то же время. WHERE COALESCE (a, '') <> '' AND .... – Matt

+0

Это не сработает ... Он хочет, чтобы ORs не AND. – maplemale

+0

@maplemale Я согласен с duncan на AND. Но duncan Я просто перечитываю ваш ответ, я должен пустнуть, почему вы используете, и не является NULL вместо NULL? Это отбросит все, кроме строки 1. Я думаю, вы хотели использовать IS NULL и b NULL, а c IS NULL – Matt

2

Если вы действительно хотите, чтобы проверить все столбцы таблицы используйте:

select * 
from the_table 
where not (the_table is null); 

Это приведет к удалению все строки, где все colum ns равны нулю.

Если вы просто хотите проверить подмножество столбцов (например, потому что сгенерированный PK столбец, который вы не показали нам), использование:

select * 
from the_table 
where not ((a,b,c) is null); 
+0

Боковой вопрос: какой оптимизатор больше? Эксклюзивный оператор AND с операторами NOT или inc OR? Или это не имеет значения? Из варианта чистой читаемости мне нравится, когда не ((a, b, c) равно null) лучше отвечает принятому ответу с точки зрения читаемости. Но, может быть, это синтаксический сахар? – maplemale

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