Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SET versus SELECT beim Zuweisen von Variablen?

Zitat, das diesen Artikel zusammenfasst:

  1. SET ist der ANSI-Standard für Variablenzuweisungen, SELECT nicht.
  2. SET kann jeweils nur eine Variable zuweisen, SELECT kann mehrere Zuweisungen gleichzeitig vornehmen.
  3. Bei der Zuweisung aus einer Abfrage kann SET nur einen Skalarwert zuweisen. Wenn die Abfrage mehrere Werte/Zeilen zurückgibt, löst SET einen Fehler aus. SELECT weist der Variablen einen der Werte zu und verbirgt die Tatsache, dass mehrere Werte zurückgegeben wurden (so dass Sie wahrscheinlich nie erfahren würden, warum an anderer Stelle etwas schief gelaufen ist - viel Spaß bei der Fehlerbehebung)
  4. Wenn bei der Zuweisung aus einer Abfrage kein Wert zurückgegeben wird, weist SET NULL zu, wobei SELECT die Zuweisung überhaupt nicht vornimmt (so dass die Variable ihren vorherigen Wert nicht ändert)
  5. Was Geschwindigkeitsunterschiede betrifft - es gibt keine direkten Unterschiede zwischen SET und SELECT. Die Fähigkeit von SELECT, mehrere Zuweisungen auf einmal vorzunehmen, verleiht ihm jedoch einen leichten Geschwindigkeitsvorteil gegenüber SET.