2015-04-16 6 views
-1

У меня есть 25 столбцов в таблице SQL Server 2008, и я ТОЛЬКО И ТОЛЬКО нужно выбрать ячейки, которые не являются пустыми. До сих пор я пытался Where состояния как:SQL Select ONLY Непустые столбцы

Select * 
from TableNmae 
where ColumnA is not like '% %' 
    and ColumnB is not like '% %' ,etc... 

И я также попробовал Union и Union All для всех столбцов, но не из них возвращает только непустые ячейки для данного состояния.

+1

Пустой? Вы имеете в виду NULL или значения нулевой длины? Вы можете выбирать только определенные строки, так что вы хотите, если одно значение пустое? – jarlh

+0

Они типа nvarchar, поэтому я имею в виду Not Null. Мне просто нужно выбрать Only и Only not null cell из строки. – user3314399

+1

Не является нулевым, а не как –

ответ

3

Я пишу это как следующий, чтобы использовать индексы, если таковая существует:

Select * 
From TableName 
Where ColumnA Is Not NULL And ColumnA <> '' 
    And ColumnB Is Not NULL And ColumnB <> '' 
....... 
0
Select * 
from TableNmae 
where ColumnA is not null 
and ColumnB is not null ... 
+0

Серьезно? В вопросе задается вопрос «выбирать ячейки, которые не являются пустыми», а ответ, который делает только это, сокращенно? – MattDionis

+0

Сбалансированный для вас с +1, _but_, строго говоря, вы не проверяете «не пусто», вы проверяете «не null». Однако ОП не был очень ясен. – Mackan

0
Select * 
from TableNmae 
where isnull(ColumnA,'') != '' 
    and isnull(ColumnB, '') != '' 

Если это не числовой тип данных, вы должны установить IsNull 0 или конвертировать/приведение к VARCHAR типов данных.

0

Вы можете сделать это с помощью IsNull как,

Select * from TableNmae where IsNull(ColumnA, '') <> '' and IsNull(ColumnA, '') <> ''...

Это должно касаться ISNULL и опорожнить, а также. Это вернет строки, у которых не все пустые столбцы. Если вы зададите вопрос о возвращении только непустых столбцов в строке, используя один оператор select, который не может быть выполнен.

+0

это точно мой вопрос: «возвращать только непустые столбцы внутри строки, используя один оператор select, который не может быть выполнен». Могу ли я сделать это с помощью цикла и вставить результат в временную таблицу? – user3314399

+0

Да и нет, это зависит от того, как вы хотите свой вывод, хотите ли вы, чтобы все столбцы были как один столбец на выходе. Что делать, если несколько столбцов имеют данные в строке. – XtremeBytes

0

Если вы не хотите быть строка на основе, вы могли бы объединение вместе кучу индивидуальных оценок столбцов:

SELECT 'ColumnA' AS ColumnName, ColumnA AS ColumnValue 
FROM TableName 
WHERE NOT ColumnA IS NULL 

UNION ALL 

SELECT 'ColumnB' AS ColumnName, ColumnB AS ColumnValue 
FROM TableName 
WHERE NOT ColumnB IS NULL 

UNION ALL 

-- etc.... 

Некоторые другие ответы также показывают более гибкие способы использования IsNull, чтобы помочь отсеять нуль против пустых значений ... хорошо бы добавить, что здесь, как хорошо. Вы также можете выбрать ключевые поля из таблицы, чтобы вы могли идентифицировать исходные строки.

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