sql >> Database teknologi >  >> RDS >> Mysql

SQL for at returnere en liste over felter, der indeholder ikke-NULL-data

Så dit mål er at få listen over kolonnenavne sådan at de alle har mindst én ikke-NULL-værdi i nogen af ​​rækkerne, ikke? Hvis ja, se nedenfor...

Du kan ikke parametrisere navne på kolonner i en SQL-forespørgsel, så du bliver nødt til at bygge din SQL-tekst dynamisk på det klientsprog, du vælger. Algoritmen ville se sådan ud:

  1. Du skal kende listen over kolonnenavne på forhånd. Der er måder at automatisere hentning af denne liste i PostgreSQL , MySQL og de fleste andre databaser.
  2. Gentag gennem denne liste og for hver column_name opbygge SQL-teksten dynamisk såsom:SELECT column_name FROM YOUR_TABLE WHERE column_name IS NOT NULL LIMIT 1 (se MySQL LIMIT og PostgreSQL LIMIT ).
  3. Udfør forespørgslen ovenfor og hent resultatet. Hvis der er en række i den, skal du tilføje column_name til resultatlisten .
  4. Fortsæt med at gentage, mens der er elementer i kolonnenavnelisten.

Den resulterende liste indeholder nu kolonner med mindst én ikke-NULL-værdi.



  1. SQL Row_Number()-funktion i Where-klausul

  2. Sådan opdages og forhindres uventet vækst af SQL Server-databasen TempDB

  3. Forskellen mellem NullIf() og IfNull() i SQLite

  4. hvordan får man detaljer fra flere borde?