Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
En kombination av symboler och operatorer som SQL Server Database Engine utvärderar för att få ett enda datavärde. Enkla uttryck kan vara en enda konstant, variabel, kolumn eller skalär funktion. Operatorer kan användas för att koppla två eller flera enkla uttryck till ett komplext uttryck.
              
              
              Transact-SQL syntaxkonventioner
Syntax
Syntax för SQL Server och Azure SQL Database.
{ constant | scalar_function | [ table_name. ] column | variable
    | ( expression ) | ( scalar_subquery )
    | { unary_operator } expression
    | expression { binary_operator } expression
    | ranking_windowed_function | aggregate_windowed_function
}
Syntax för Azure Synapse Analytics och Parallel Data Warehouse.
-- Expression in a SELECT statement
<expression> ::=
{
    constant
    | scalar_function
    | column
    | variable
    | ( expression )
    | { unary_operator } expression
    | expression { binary_operator } expression
}
[ COLLATE Windows_collation_name ]
-- Scalar Expression in a DECLARE , SET , IF...ELSE , or WHILE statement
<scalar_expression> ::=
{
    constant
    | scalar_function
    | variable
    | ( expression )
    | (scalar_subquery )
    | { unary_operator } expression
    | expression { binary_operator } expression
}
[ COLLATE [ Windows_collation_name ] ]
Arguments
constant
En symbol som representerar ett enda, specifikt datavärde. Mer information finns i Konstanter.
scalar_function
En enhet med Transact-SQL syntax som tillhandahåller en specifik tjänst och returnerar ett enda värde. 
              scalar_function kan vara inbyggda skalärfunktioner, till exempel SUMfunktionerna , GETDATE()eller CAST eller skalära användardefinierade funktioner.
table_name
Namnet eller aliaset för en tabell.
column
Namnet på en kolumn. Endast namnet på kolumnen tillåts i ett uttryck.
variable
Namnet på en variabel eller parameter. Mer information finns i DECLARE @local_variable.
expression
Alla giltiga uttryck enligt definitionen i den här artikeln. Parenteserna är grupperingsoperatorer som ser till att alla operatorer i uttrycket inom parenteserna utvärderas innan det resulterande uttrycket kombineras med ett annat.
scalar_subquery
En underfråga som returnerar ett värde. For example:
SELECT MAX(UnitPrice)
FROM Products;
unary_operator
Unary-operatorer kan endast tillämpas på uttryck som utvärderas för någon av datatyperna i kategorin numerisk datatyp. Är en operator som bara har en numerisk operand:
- 
              +anger ett positivt tal
- 
              -anger ett negativt tal
- 
              ~anger ens komplementoperator
binary_operator
En operator som definierar hur två uttryck kombineras för att ge ett enda resultat. 
              binary_operator kan vara en aritmetikoperator, tilldelningsoperatorn (=), en bitvis operator, en jämförelseoperator, en logisk operator, strängsammanfogningsoperatorn (+) eller en unary-operator. Mer information om operatorer finns i Operatorer.
ranking_windowed_function
Valfri Transact-SQL rangordningsfunktion. Mer information finns i Rankningsfunktioner.
aggregate_windowed_function
Alla Transact-SQL mängdfunktioner med OVER-satsen. Mer information finns i SELECT - OVER-satsen.
Expression results
För ett enkelt uttryck som består av en enda konstant, variabel, skalär funktion eller kolumnnamn: datatypen, sorteringen, precisionen, skalan och värdet för uttrycket är datatypen, sorteringen, precisionen, skalan och värdet för det refererade elementet.
När två uttryck kombineras med hjälp av jämförelseoperatorer eller logiska operatorer är den resulterande datatypen boolesk och värdet är antingen: TRUE, FALSEeller UNKNOWN. Mer information om booleska datatyper finns i Jämförelseoperatorer.
När två uttryck kombineras med hjälp av aritmetiska operatorer, bitvis eller strängoperatorer avgör operatorn den resulterande datatypen.
Komplexa uttryck som består av många symboler och operatorer utvärderas till ett resultat med en enda värde. Datatypen, sorteringen, precisionen och värdet för det resulterande uttrycket bestäms genom att komponentuttrycken kombineras, två i taget, tills ett slutligt resultat har uppnåtts. Sekvensen där uttrycken kombineras definieras av operatorernas prioritet i uttrycket.
Remarks
Två uttryck kan kombineras av en operator om båda har datatyper som stöds av operatorn, och minst ett av dessa villkor är sant:
- Uttrycken har samma datatyp. 
- Datatypen med den lägre prioriteten kan implicit konverteras till datatypen med högre prioritet för datatypen. 
Om uttrycken inte uppfyller dessa villkor CAST kan funktionerna eller CONVERT användas. Använd CAST eller CONVERT för att explicit konvertera datatypen med lägre prioritet till antingen datatypen med högre prioritet eller till en mellanliggande datatyp som implicit kan konverteras till datatypen med högre prioritet.
Om det inte finns någon implicit eller explicit konvertering som stöds kan de två uttrycken inte kombineras.
Sortering av alla uttryck som utvärderas till en teckensträng anges genom att följa reglerna för sorteringsprioritet. Mer information finns i sorteringsprioritet.
I ett programmeringsspråk som C eller Microsoft Visual Basic utvärderas alltid ett uttryck till ett enda resultat. Uttryck i en Transact-SQL välj lista följer en variant av den här regeln: Uttrycket utvärderas individuellt för varje rad i resultatuppsättningen. Ett enda uttryck kan ha ett annat värde i varje rad i resultatuppsättningen, men varje rad har bara ett värde för uttrycket. I följande SELECT instruktion är till exempel både referensen till ProductID och termen 1+2 i urvalslistan uttryck:
USE AdventureWorks2022;
GO
SELECT ProductID, 1 + 2
FROM Production.Product;
GO
Uttrycket 1+2 utvärderas till 3 i varje rad i resultatuppsättningen. Även om uttrycket ProductID genererar ett unikt värde i varje resultatuppsättningsrad, har varje rad bara ett värde för ProductID.
- Azure Synapse Analytics allokerar en fast maximal mängd minne till varje tråd så att ingen tråd kan använda allt minne. En del av det här minnet används för att lagra frågors uttryck. Om en fråga har för många uttryck och det minne som krävs överskrider den interna gränsen kör inte motorn den. För att undvika det här problemet kan användare ändra frågan till flera frågor med mindre antal uttryck i varje. Du har till exempel en fråga med en lång lista med uttryck i WHERE-satsen:
DELETE
FROM dbo.MyTable
WHERE (c1 = '0000001' AND c2 = 'A000001')
    OR (c1 = '0000002' AND c2 = 'A000002')
    OR (c1 = '0000003' AND c2 = 'A000003')
/* ... additional, similar expressions omitted for simplicity */
Ändra den här frågan till:
DELETE FROM dbo.MyTable WHERE (c1 = '0000001' AND c2 = 'A000001');
DELETE FROM dbo.MyTable WHERE (c1 = '0000002' AND c2 = 'A000002');
DELETE FROM dbo.MyTable WHERE (c1 = '0000003' AND c2 = 'A000003');
/* ... refactored, individual DELETE statements omitted for simplicity  */
Related content
- VID TIDSZON (Transact-SQL)
- CASE (Transact-SQL)
- CAST och CONVERT (Transact-SQL)
- COALESCE (Transact-SQL)
- datatypkonvertering (databasmotor)
- Prioritet för datatyp (Transact-SQL)
- Datatyper (Transact-SQL)
- Vilka är SQL-databasfunktionerna?
- LIKE (Transact-SQL)
- NULLIF (Transact-SQL)
- SELECT (Transact-SQL)
- WHERE (Transact-SQL)