SQL-variabler: SQL Server Deklarera, ange och välj variabel
⚡ Smart sammanfattning
SQL Server-variabler är namngivna objekt som fungerar som platshållare för ett enskilt datavärde i minnet. En variabel måste deklareras med DECLARE-satsen innan den kan tilldelas ett värde och återanvändas.

Vad är en variabel i SQL Server?
In MS SQL Server, variabler är objekt som fungerar som platshållare för en minnesplats. En variabel innehåller ett enda datavärde som du kan läsa och återanvända i en batch eller procedur.
Variabeltyper i SQL: Lokalt, Globalt
MS SQL Server har två typer av variabler:
- Lokal variabel
- Global variabel
En användare kan dock bara skapa en lokal variabel. Figuren nedan förklarar de två typerna av variabler som finns tillgängliga i MS SQL Server.
Lokal variabel
- En användare deklarerar den lokala variabeln.
- Som standard börjar ett lokalt variabelnamn med @.
- Varje lokal variabel är begränsad till den aktuella batchen eller proceduren inom en given session.
Global variabel
- Systemet underhåller den globala variabeln; en användare kan inte deklarera en.
- Ett globalt variabelnamn börjar med @@.
- Den lagrar sessionsrelaterad information.
Hur man DEKLÄRERAR en variabel i SQL
Innan du använder någon variabel i en batch eller procedur i SQL, måste du deklarera den. DECLARE-kommandot skapar en variabel som fungerar som en platshållare för en minnesplats. Först när deklarationen har gjorts kan variabeln användas i den efterföljande delen av batchen eller proceduren.
TSQL-syntax:
DECLARE { @LOCAL_VARIABLE[AS] data_type [ = value ] }
regler:
- Initialisering är valfritt vid deklaration.
- Som standard initierar DECLARE variabeln till NULL.
- Att använda nyckelordet 'AS' är valfritt.
- För att deklarera mer än en lokal variabel, lägg till ett kommatecken efter den första definitionen, ange sedan nästa variabelnamn och data typ.
Exempel på att deklarera en variabel
Fråga: Med 'AS'
DECLARE @COURSE_ID AS INT;
Fråga: Utan 'AS'
DECLARE @COURSE_NAME VARCHAR (10);
Fråga: DEKLARERA två variabler
DECLARE @COURSE_ID AS INT, @COURSE_NAME VARCHAR (10);
Tilldela ett värde till SQL-variabel
Du kan tilldela ett värde till en variabel på följande tre sätt:
- Under variabeldeklaration med hjälp av nyckelordet DECLARE.
- Använder SET.
- Använda VÄLJ.
Låt oss titta på alla tre sätten i detalj.
Under variabeldeklaration med nyckelord DECLARE
T-SQL-syntax:
DECLARE { @Local_Variable [AS] Datatype [ = value ] }
Här, efter datatypen, kan du använda '=' följt av värdet som ska tilldelas.
Fråga:
DECLARE @COURSE_ID AS INT = 5 PRINT @COURSE_ID
Om frågan körs skrivs det värde som tilldelats under deklarationen ut, som visas nedan.
Använda SQL SET-variabeln
Ibland vill man hålla deklaration och initialisering separata. SET tilldelar ett värde till variabeln efter att den har deklarerats. Nedan följer de olika sätten att tilldela värden med SET.
Exempel: Tilldela ett värde till en variabel med hjälp av SET
Syntax:
DECLARE @Local_Variable <Data_Type> SET @Local_Variable = <Value>
Fråga:
DECLARE @COURSE_ID AS INT SET @COURSE_ID = 5 PRINT @COURSE_ID
Att köra skriptet returnerar värdet som tilldelats med SET, vilket visas nedan.
Exempel: Tilldela ett värde till flera variabler med hjälp av SET
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable_2 <Data_Type>, SET @Local_Variable_1 = <Value_1> SET @Local_Variable_2 = <Value_2>
Regel: Ett SET-nyckelord kan endast tilldela ett värde till en variabel.
Fråga:
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SET @COURSE_ID = 5 SET @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
De två PRINT-satserna returnerar båda tilldelade värdena, som visas nedan.
Exempel: Tilldela ett värde till en variabel med en skalär delfråga med hjälp av SET
Syntax:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable_2 <Data_Type>,SET @Local_Variable_1 = (SELECT <Column_1> from <Table_Name> where <Condition_1>)
regler:
- Omge frågan inom parentes.
- Frågan ska vara en skalär fråga, vilket innebär att den bara returnerar en rad och en kolumn. Annars genererar frågan ett fel.
- Om frågan returnerar noll rader sätts variabeln till EMPTY, det vill säga NULL.
Anta att vi har bord som heter 'Guru99' med två kolumner, som visas nedan. Denna tabell används i följande exempel.
Exempel 1: När delfrågan returnerar en rad som resultat
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 3) PRINT @COURSE_NAME
Eftersom delfrågan returnerar en matchande rad får variabeln det värdet, som visas nedan.
Exempel 2: När delfrågan returnerar noll rader som resultat
DECLARE @COURSE_NAME VARCHAR (10) SET @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Eftersom delfrågan inte returnerar några rader är variabelvärdet EMPTY, det vill säga NULL, så ingenting skrivs ut, som visas nedan.
Använda SQL SELECT-variabeln
Precis som med SET kan du även använda SELECT för att tilldela värden till variabler efter att ha deklarerat dem med DECLARE. Nedan följer olika sätt att tilldela ett värde med SELECT.
Exempel: Tilldela ett värde till en variabel med hjälp av SELECT
Syntax:
DECLARE @LOCAL_VARIABLE <Data_Type> SELECT @LOCAL_VARIABLE = <Value>
Fråga:
DECLARE @COURSE_ID INT SELECT @COURSE_ID = 5 PRINT @COURSE_ID
SELECT-tilldelningen skriver ut värdet, som visas nedan.
Exempel: Tilldela ett värde till flera variabler med hjälp av SELECT
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Value_1>, @Local_Variable _2 = <Value_2>
Regel: Till skillnad från SET kan SELECT tilldela ett värde till flera variabler separerade med kommatecken.
DECLARE @COURSE_ID as INT, @COURSE_NAME AS VARCHAR(5) SELECT @COURSE_ID = 5, @COURSE_NAME = 'UNIX' PRINT @COURSE_ID PRINT @COURSE_NAME
Båda variablerna tilldelas i en enda SELECT, som visas nedan.
Exempel: Tilldela värdet till en variabel med en underfråga med hjälp av SELECT
Syntax:
DECLARE @Local_Variable_1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = (SELECT <Column_1> from <Table_name> where <Condition_1>)
regler:
- Omge frågan inom parentes.
- Frågan ska vara en skalär fråga som returnerar en rad och en kolumn. Annars genererar frågan ett fel.
- Om frågan returnerar noll rader är variabeln EMPTY, det vill säga NULL.
Ompröva vår 'Guru99 fots bord.
Exempel 1: När delfrågan returnerar en rad som resultat
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 1) PRINT @COURSE_NAME
Delfrågan returnerar en rad, så variabeln innehåller det värdet, som visas nedan.
Exempel 2: När delfrågan returnerar noll rader som resultat
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = (select Tutorial_name from Guru99 where Tutorial_ID = 5) PRINT @COURSE_NAME
Utan någon matchande rad förblir variabeln TOM, det vill säga NULL, som visas nedan.
Exempel 3: Tilldela ett värde till en variabel med ett vanligt SELECT-uttryck
Syntax:
DECLARE @Local_Variable _1 <Data_Type>, @Local_Variable _2 <Data_Type>,SELECT @Local_Variable _1 = <Column_1> from <Table_name> where <Condition_1>
regler:
- Till skillnad från SET, om frågan returnerar flera rader, sätts variabelvärdet till värdet på den sista raden.
- Om frågan returnerar noll rader sätts variabeln till EMPTY, det vill säga NULL.
Fråga 1: Frågan returnerar en rad
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 3 PRINT @COURSE_NAME
Den enda matchande raden anger variabelvärdet, som visas nedan.
Fråga 2: Frågan returnerar flera rader
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 PRINT @COURSE_NAME
När flera rader matchar behåller variabeln värdet från den sista raden, som visas nedan.
Fråga 3: Frågan returnerar noll rader
DECLARE @COURSE_NAME VARCHAR (10) SELECT @COURSE_NAME = Tutorial_name from Guru99 where Tutorial_ID = 5 PRINT @COURSE_NAME
När inga rader matchar är variabeln EMPTY, det vill säga NULL, som visas nedan.
Andra SQL-variable exempel
En deklarerad variabel kan också användas inuti en fråga, till exempel i en WHERE-klausul för att filtrera rader.
Fråga:
DECLARE @COURSE_ID Int = 1 SELECT * from Guru99 where Tutorial_id = @COURSE_ID
Variabeln filtrerar frågan och returnerar matchande rad, som visas nedan.
Intressanta fakta om SQL Server-variabler!
- En lokal variabel kan visas med hjälp av både PRINT och SELECT-kommandot.
- Tabelldatatypen tillåter inte användning av 'AS' under deklaration.
- SET följer ANSI-standarder, medan SELECT inte gör det.
- Det är också tillåtet att skapa en lokal variabel med namnet @. Den kan till exempel deklareras som:
'DECLARE @@ as VARCHAR (10)'















