Vaším cílem je tedy získat seznam názvů sloupců takové, že všechny mají v kterémkoli z řádků alespoň jednu hodnotu, která není NULL, že? Pokud ano, viz níže...
V dotazu SQL nemůžete parametrizovat názvy sloupců, takže budete muset svůj text SQL sestavit dynamicky v klientském jazyce, který si vyberete. Algoritmus by vypadal takto:
- Seznam názvů sloupců budete muset znát předem. Existují způsoby, jak automatizovat načítání tohoto seznamu v PostgreSQL , MySQL a většina ostatních databází.
- Projděte tento seznam a pro každý
column_name
dynamicky sestavujte text SQL, například:SELECT column_name FROM YOUR_TABLE WHERE column_name IS NOT NULL LIMIT 1
(viz MySQL LIMIT a PostgreSQL LIMIT ). - Proveďte výše uvedený dotaz a načtěte výsledek. Pokud obsahuje řádek, přidejte
column_name
do výsledného seznamu . - Pokračujte v opakování, dokud jsou v seznamu názvů sloupců prvky.
Výsledný seznam nyní obsahuje sloupce s alespoň jednou hodnotou jinou než NULL.