Отфильтровать столбцы, содержащие значения NULL в SQL - PullRequest
1 голос
/ 01 декабря 2011

Я работаю с SQL Server 2008. У меня есть оператор выбора, который всегда возвращает одну строку.Я хочу обернуть его другим оператором select, который вернет ту же строку, но отфильтрует все столбцы с нулевыми значениями.Например, если первый оператор select вернул:

C1     C2     C3     C4     C5
----------------------------------
1       2    NULL   NULL     5

Второй отфильтрует столбцы C3 и C4, и я получу:

C1      C2      C5
-------------------
1       2        5

Возможно ли это?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 01 декабря 2011

Во втором случае просто не включайте C3 и C4 в свои SELECT заявления - это действительно все, что вы можете сделать.

В T-SQL нет опции magic , чтобы пропустить столбцов , которые NULL - либо вы хотите столбец, а затем укажите его в своем списке SELECT столбцы, или вы не хотите - тогда оставьте это.

2 голосов
/ 01 декабря 2011

Это действительно работа для внешнего интерфейса, а не T-SQL

Тем не менее, это можно сделать с помощью динамического SQL, но гораздо проще сделать это из любого внешнего интерфейса, вызывающего этот оператор выбора

0 голосов
/ 01 декабря 2011

Я не уверен, поможет ли это или нет, но кажется, что UNPIVOT стоит посмотреть. Возвращает значения столбцов в виде разных строк.

declare @t table(c1 int, c2 int, c3 int, c4 int, c5 int)

insert into @t(c1,c2,c3,c4,c5) values (1,2,null, null, 5)

select cols, col
from (select c1,c2,c3,c4,c5 from @t) p
unpivot (cols for col in (c1,c2,c3,c4,c5)) as unpvt

Возвращает:

cols        col
----------- ---------
1           c1
2           c2
5           c5
0 голосов
/ 01 декабря 2011

Ну, почему бы вам не создать представление с ненулевыми значениями, такими как

create view vnotnull as select C1,C2,C5 from your_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...