Hej,
jak najprościej wyciągnąć wszystkie kolumny danej tabeli, w której wszystkie wiersze mają nulle? Tzn dana kolumna nie ma wartości innej niż null.
T-SQL
To trochę bzdura, ponieważ takie tabele nie mogą posiadać klucza głównego (Primary Key
).
Naprawdę masz takie tabele bez zdefiniowanego PK?
Da się sprawdzić które tabele nie posiadają PK i dla nich należy sprawdzić wszystkie wiersze i wszystkie kolumny.
To karkołomne, ale możliwe nawet w czystym SQL.
Odpowiedź brzmi: tak, można.
Ale to mi trochę brzydko pachnie...
Albo ja nie kumam albo Ty nie zrozumiałeś @wloochacz bo jak to tabela gdzie jakaś kolumna ma wartość null nie może posiadać PK. Oczywiście, ze może.
http://sqlfiddle.com/#!18/86e52/1
Zakładam, że odczytałeś, że cały wiersz posiada wartości null wtedy to prawda. OP jednak chodzi o nazwę kolumny "kol3" z załączonego przykładu.
EDIT: A co do samego pytania to jeśli tych kolumn nie ma za dużo i to chodzi o jakieś 1 rozwiązanie to IMO najbanalniej CASE'm jak choćby tu opisali:
https://stackoverflow.com/questions/38035952/selecting-column-names-where-values-are-null
Dwie opcje są:
- bez interwencji w tabele z informacją o schemacie - trzeba wylistować wszystkie kolumny w zapytaniu, którymi jest się zainteresowanym czy mają wszystkie wartości null, dodatkowo na końcu dostaniesz true/false, a nie odfiltrowane kolumny
- z interwencją w information_schema - powyższe problemy znikają