Domanda

sto convertendo SQL da Teradata a SQL Server

in Teradata, hanno il formato

SELECT col1, col2
FROM table1
INTO @variable1, @variable2

In SQL Server, ho trovato

SET @variable1 = (
SELECT col1 
FROM table1
);

Che solo permette una singola colonna / variabile per dichiarazione. Come assegnare 2 o più variabili utilizzando una singola istruzione SELECT?

È stato utile?

Soluzione

SELECT @variable1 = col1, @variable2 = col2
FROM table1

Altri suggerimenti

SELECT @var = col1,
       @var2 = col2
FROM   Table

Ecco alcune interessanti informazioni SET / SELECT

  
      
  • SET è lo standard ANSI per l'assegnazione variabili, SELECT non è.
  •   
  • SET può assegnare una sola variabile alla volta, SELEZIONA può fare di più   le assegnazioni in una sola volta.
  •   
  • Se l 'assegnazione da una query, SET può assegnare solo un valore scalare. Se la   query restituisce più valori / righe   allora SET genererà un errore. SELEZIONARE   assegnerà uno dei valori alla   variabile e nascondere il fatto che   più valori sono stati restituiti (così   si sarebbe probabilmente mai sapere perché qualcosa   stava andando male altrove - divertirsi   la risoluzione dei problemi che uno)
  •   
  • Quando si assegna da una query, se non v'è alcun valore restituito allora SET   assegnare NULL, dove SELEZIONA no   eseguire l'assegnazione a tutti (in modo che il   variabile non sarà cambiato dalla sua   valore precedente)
  •   
  • Per quanto riguarda le differenze di velocità - non ci sono differenze diretti tra SET   e SELECT. Tuttavia la capacità di SELEZIONA   per fare assegnazioni multiple in un unico   colpo fa dare un leggero velocità   vantaggio rispetto SET.
  •   
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top