Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQL para retornar a lista de campos contendo dados não NULL


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:
  1. 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.
  2. 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 ).
  3. Execute a consulta acima e busque o resultado. Se tiver uma linha, adicione o column_name para a lista de resultados .
  4. 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.