Então, seu objetivo é obter a lista de nomes de colunas tal que todos eles tenham pelo menos um valor não NULL em qualquer uma das linhas, certo? Se sim, veja abaixo...
Você não pode parametrizar nomes de colunas em uma consulta SQL, então você precisará construir seu texto SQL dinamicamente, no idioma cliente de sua escolha. O algoritmo ficaria assim:
- Você precisará conhecer a lista de nomes de colunas com antecedência. Existem maneiras de automatizar a recuperação dessa lista no PostgreSQL , MySQL e a maioria dos outros bancos de dados.
- Percorra esta lista e para cada
column_name
construir dinamicamente o texto SQL como:SELECT column_name FROM YOUR_TABLE WHERE column_name IS NOT NULL LIMIT 1
(veja o LIMIT do MySQL e PostgreSQL LIMIT ). - Execute a consulta acima e busque o resultado. Se tiver uma linha, adicione o
column_name
para a lista de resultados . - Continue iterando enquanto houver elementos na lista de nomes de colunas.
A lista resultante agora contém colunas com pelo menos um valor não NULL.