Votre objectif est donc d'obtenir la liste des noms de colonnes de sorte que tous aient au moins une valeur non NULL dans l'une des lignes, n'est-ce pas ? Si oui, voir ci-dessous...
Vous ne pouvez pas paramétrer les noms de colonnes dans une requête SQL, vous devrez donc créer votre texte SQL dynamiquement, dans le langage client de votre choix. L'algorithme ressemblerait à ceci :
- Vous devrez connaître la liste des noms de colonnes à l'avance. Il existe des moyens d'automatiser la récupération de cette liste dans PostgreSQL , MySQL et la plupart des autres bases de données.
- Parcourez cette liste et pour chaque
column_name
construire dynamiquement le texte SQL tel que :SELECT column_name FROM YOUR_TABLE WHERE column_name IS NOT NULL LIMIT 1
(voir MySQL LIMIT et PostgreSQL LIMIT ). - Exécutez la requête ci-dessus et récupérez le résultat. S'il contient une ligne, ajoutez le
column_name
à la liste des résultats . - Continuez à itérer tant qu'il y a des éléments dans la liste des noms de colonnes.
La liste résultante contient maintenant des colonnes avec au moins une valeur non NULL.