Overblog Folge diesem Blog
Edit post Administration Create my blog
Blog von Olaf Helper

INSERT INTO / SELECT FROM … Multiple-Values

19. Januar 2009 , Geschrieben von Olaf Helper Veröffentlicht in #T-SQL

Wenn man mal eben ein paar Werte / Zeile braucht, um Logiken u.ä. zu testen, dann hat man bis zum MS SQL Server 2005 meist ein temporäre Tabelle angelegt, ein paar Daten eingefügt und die dann verwendet; sah dann so aus: 

 CREATE TABLE #Dummy 
  (NumFeld int, Datum datetime); 
 -- Einzeln per Hand 
 INSERT INTO #Dummy (NumFeld, Datum) VALUES (1, GETDATE()); 
 INSERT INTO #Dummy (NumFeld, Datum) VALUES (2, GETDATE()); 
 INSERT INTO #Dummy (NumFeld, Datum) VALUES (3, GETDATE()); 
 -- oder per SELECT UNION 
 INSERT INTO #Dummy (NumFeld, Datum) 
 SELECT 4, GETDATE() UNION ALL 
 SELECT 5, GETDATE() UNION ALL 
 SELECT 6, GETDATE() 

 

Ab dem MS SQL Server 2008 kann man nun auch „Multiple Values“ angeben. Zugegeben, nicht unbedingt ein riesiges neues Feature, aber es ist recht praktisch, da es Tipparbeit spart. 

 -- Multiple Values ab MSSQL2008 
 INSERT INTO #Dummy (NumFeld, Datum) 
 VALUES (7, GETDATE()), 
  (8, GETDATE()), 
  (9, GETDATE()) 
 SELECT * FROM #Dummy  
 DROP TABLE #Dummy; 
 GO 

 


Man kann sich nun aber auch die temporäre Tabelle sparen und VALUES gleich als „derivated table“ verwenden, mit dem Alias gibt man dann die Feldnamen an und mit dem ersten VALUES kann man den Datentypen explizit festlegen:

 SELECT * 
 FROM (VALUES(CAST(1 AS smallint), CAST('20090118' as datetime)), 
  (2, GetDate()), 
  (3, GetDate()) 
  ) AS myValues(NumFeld, Datum) 
   

Diesen Post teilen

Repost 0

Kommentiere diesen Post