sql >> Databáze >  >> RDS >> Oracle

Jak vložit výchozí hodnoty pro každý sloupec v tabulce?

To nemůžeme. Musíme zadat všechny sloupce a jejich jednotlivé funkce NVL(). Vím, že to vypadá jako hodně úsilí, ale zvažte, co by se stalo, kdyby některý z vašich sloupců byl DATE nebo nějaký jiný "exotický" datový typ.

Pokud máte mnoho sloupců a opravdu chcete ušetřit úsilí, můžete klauzule vygenerovat z datového slovníku:

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

Cut'n'paste sadu výsledků do editoru.

Jakmile začnete na této trase, je snadné být sofistikovanější:

 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. Ladění výkonu kolenem:Nesprávné použití dočasných tabulek

  2. Složitost NULL – Část 3, Chybějící standardní funkce a alternativy T-SQL

  3. dynamický výběr názvu sloupce v MySql

  4. Jak seskupit sestavu podle více polí v Accessu 2016