sql >> Database >  >> RDS >> Oracle

Hoe zet ik standaardwaarden voor elke kolom in de tabel?

Dat kunnen we niet. We moeten alle kolommen en hun individuele NVL()-functies typen. Ik weet dat dat veel moeite lijkt, maar bedenk wat er zou gebeuren als een van uw kolommen een DATE of een ander 'exotisch' gegevenstype is.

Als u veel kolommen heeft en u echt moeite wilt besparen, kunt u de clausules uit de datadictionary genereren:

 select 'nvl('|| column_name || ', 0)' 
 from user_tab_columns
 where table_name = 'STUDENT'
 order by column_id;

Knip en plak de resultatenset in een editor.

Als je eenmaal op deze route bent begonnen, is het gemakkelijk om geavanceerder te worden:

 select case when column_id > 1 then ',' end ||
       'nvl('|| column_name || ',' ||
       case when data_type = 'DATE' then 'sysdate'
            when  data_type = 'VARCHAR2' then '''DEF''' 
            else '0' end ||
       ')' 
 from user_tab_columns
 where table_name = 'STUDENT'
 order by column_id;


  1. SQL Server-query xml-kenmerk voor een elementwaarde

  2. Aangemeld als postgres maar krijg de fout createuser:aanmaken van nieuwe rol is mislukt:ERROR:moet superuser zijn om superusers aan te maken

  3. Evenementenplanner in PostgreSQL?

  4. Concat-veldwaarde naar tekenreeks in SQL Server