Så ditt mål är att få listan med kolumnnamn så att alla har minst ett icke-NULL-värde i någon av raderna, eller hur? Om så är fallet, se nedan...
Du kan inte parametrisera namn på kolumner i en SQL-fråga, så du måste bygga din SQL-text dynamiskt på det klientspråk du väljer. Algoritmen skulle se ut så här:
- Du måste känna till listan med kolumnnamn i förväg. Det finns sätt att automatisera hämtning av den här listan i PostgreSQL , MySQL och de flesta andra databaser.
- Iterera genom den här listan och för varje
column_name
bygg dynamiskt SQL-texten som:SELECT column_name FROM YOUR_TABLE WHERE column_name IS NOT NULL LIMIT 1
(se MySQL LIMIT och PostgreSQL LIMIT ). - Utför frågan ovan och hämta resultatet. Om det finns en rad i den, lägg till
column_name
till resultatlistan . - Fortsätt att iterera medan det finns element i kolumnnamnslistan.
Den resulterande listan innehåller nu kolumner med minst ett icke-NULL-värde.