Espressioni (Transact-SQL)Expressions (Transact-SQL)

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure sìAzure SQL Data Warehouse sìParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

Un'espressione è una combinazione di simboli e operatori che vengono valutati da Motore di database di SQL ServerSQL Server Database Engine in modo da restituire un singolo valore di dati.Is a combination of symbols and operators that the Motore di database di SQL ServerSQL Server Database Engine evaluates to obtain a single data value. Le espressioni semplici possono essere costituite da un'unica costante, variabile, colonna o funzione scalare.Simple expressions can be a single constant, variable, column, or scalar function. È possibile utilizzare gli operatori per unire due o più espressioni semplici in modo da ottenere un'espressione complessa.Operators can be used to join two or more simple expressions into a complex expression.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

-- Syntax for SQL Server and 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 for Azure SQL Data Warehouse and 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 ]  
  

ArgomentiArguments

NomeTerm DefinizioneDefinition
constantconstant Simbolo che rappresenta un singolo valore di dati specifico.Is a symbol that represents a single, specific data value. Per altre informazioni, vedere Costanti (Transact-SQL).For more information, see Constants (Transact-SQL).
scalar_functionscalar_function Unità di sintassi Transact-SQLTransact-SQL che offre un servizio specifico e restituisce un valore singolo.Is a unit of Transact-SQLTransact-SQL syntax that provides a specific service and returns a single value. scalar_function può essere costituito da funzioni scalari predefinite, ad esempio SUM, GETDATE o CAST, o da funzioni scalari definite dall'utente.scalar_function can be built-in scalar functions, such as the SUM, GETDATE, or CAST functions, or scalar user-defined functions.
[ table_name .[ table_name. ]] Nome o alias di una tabella.Is the name or alias of a table.
columncolumn Nome di colonna.Is the name of a column. In un'espressione è consentito soltanto il nome della colonna.Only the name of the column is allowed in an expression.
variablevariable Nome di una variabile o parametro.Is the name of a variable, or parameter. Per altre informazioni, vedere DECLARE @local_variable (Transact-SQL).For more information, see DECLARE @local_variable (Transact-SQL).
( expression )( expression ) Qualsiasi espressione valida, in base a quanto definito in questo argomento.Is any valid expression as defined in this topic. Le parentesi sono operatori di raggruppamento che assicurano che tutti gli operatori dell'espressione tra parentesi siano valutati prima che l'espressione risultante venga combinata con un'altra espressione.The parentheses are grouping operators that make sure that all the operators in the expression within the parentheses are evaluated before the resulting expression is combined with another.
( scalar_subquery )( scalar_subquery ) Sottoquery che restituisce un valore.Is a subquery that returns one value. Esempio:For example:

SELECT MAX(UnitPrice)

FROM Products
{ unary_operator }{ unary_operator } Gli operatori unari possono essere applicati solo a espressioni che restituiscono un tipo di dati appartenente alla categoria dei tipi di dati numerici.Unary operators can be applied only to expressions that evaluate to any one of the data types of the numeric data type category. Operatore con un solo operando numerico:Is an operator that has only one numeric operand:

+ indica un numero positivo.+ indicates a positive number.

- indica un numero negativo.- indicates a negative number.

~ indica l'operatore di complemento a uno.~ indicates the one's complement operator.
{ binary_operator }{ binary_operator } Operatore che consente di definire la modalità in base a cui due espressioni vengono unite per ottenere un unico risultato.Is an operator that defines the way two expressions are combined to yield a single result. binary_operator può essere un operatore aritmetico, l'operatore di assegnazione (=), un operatore bit per bit, un operatore di confronto, un operatore logico, l'operatore di concatenazione delle stringhe (+) o un operatore unario.binary_operator can be an arithmetic operator, the assignment operator (=), a bitwise operator, a comparison operator, a logical operator, the string concatenation operator (+), or a unary operator. Per altre informazioni sugli operatori, vedere Operatori (Transact-SQL).For more information about operators, see Operators (Transact-SQL).
ranking_windowed_functionranking_windowed_function Qualsiasi funzione di rango Transact-SQLTransact-SQL.Is any Transact-SQLTransact-SQL ranking function. Per altre informazioni, vedere Funzioni di rango (Transact-SQL).For more information, see Ranking Functions (Transact-SQL).
aggregate_windowed_functionaggregate_windowed_function Qualsiasi funzione di aggregazione Transact-SQLTransact-SQL con la clausola OVER.Is any Transact-SQLTransact-SQL aggregate function with the OVER clause. Per altre informazioni, vedere Clausola OVER - (Transact-SQL).For more information, see OVER Clause (Transact-SQL).

Risultati dell'espressioneExpression Results

Per un'espressione semplice costituita da un'unica costante, variabile, funzione scalare o colonna, il tipo di dati, le regole di confronto, la precisione, la scala e il valore dell'espressione coincidono con quelli dell'elemento a cui viene fatto riferimento.For a simple expression made up of a single constant, variable, scalar function, or column name: the data type, collation, precision, scale, and value of the expression is the data type, collation, precision, scale, and value of the referenced element.

Quando due espressioni vengono unite tramite operatori di confronto o logici, viene restituito uno dei tre valori di tipo booleano seguenti: TRUE, FALSE o UNKNOWN.When two expressions are combined by using comparison or logical operators, the resulting data type is Boolean and the value is one of the following: TRUE, FALSE, or UNKNOWN. Per altre informazioni sui tipi di dati booleani, vedere Comparison Operators (Transact-SQL) (Operatori di confronto (Transact-SQL)).For more information about Boolean data types, see Comparison Operators (Transact-SQL).

Quando due espressioni vengono unite tramite operatori aritmetici, bit per bit o di stringa, il tipo di dati restituito dipende dall'operatore.When two expressions are combined by using arithmetic, bitwise, or string operators, the operator determines the resulting data type.

Le espressioni complesse costituite da più simboli e operatori restituiscono un unico valore.Complex expressions made up of many symbols and operators evaluate to a single-valued result. Il tipo di dati, le regole di confronto, la precisione e il valore dell'espressione risultante vengono determinati tramite l'unione di due espressioni componenti alla volta, fino a ottenere il risultato finale.The data type, collation, precision, and value of the resulting expression is determined by combining the component expressions, two at a time, until a final result is reached. La sequenza in base a cui vengono unite le espressioni è definita dall'ordine di precedenza degli operatori utilizzati nell'espressione.The sequence in which the expressions are combined is defined by the precedence of the operators in the expression.

RemarksRemarks

È possibile combinare due espressioni mediante un operatore se entrambe utilizzano tipi di dati supportati dall'operatore e se almeno una delle condizioni seguenti è vera:Two expressions can be combined by an operator if they both have data types supported by the operator and at least one of these conditions is true:

  • Alle espressioni è applicato lo stesso tipo di dati.The expressions have the same data type.

  • Il tipo di dati con precedenza minore può essere convertito in modo implicito nel tipo di dati con precedenza maggiore.The data type with the lower precedence can be implicitly converted to the data type with the higher data type precedence.

Se le espressioni non soddisfano tali condizioni, è possibile utilizzare funzioni CAST o CONVERT per convertire esplicitamente il tipo di dati con precedenza minore nel tipo di dati con precedenza maggiore oppure in un tipo di dati intermedio, che può essere quindi convertito implicitamente nel tipo di dati con precedenza maggiore.If the expressions do not meet these conditions, the CAST or CONVERT functions can be used to explicitly convert the data type with the lower precedence to either the data type with the higher precedence or to an intermediate data type that can be implicitly converted to the data type with the higher precedence.

Se non sono supportate né la conversione implicita né quella esplicita, non è possibile combinare le due espressioni.If there is no supported implicit or explicit conversion, the two expressions cannot be combined.

Le regole di confronto di un'espressione che restituisce una stringa di caratteri vengono impostate in base alle regole sulla precedenza delle regole di confronto.The collation of any expression that evaluates to a character string is set by following the rules of collation precedence. Per altre informazioni, vedere Precedenza delle regole di confronto (Transact-SQL).For more information, see Collation Precedence (Transact-SQL).

In un linguaggio di programmazione come C o MicrosoftMicrosoft Visual BasicVisual Basic, un'espressione restituisce sempre un unico risultato.In a programming language such as C or MicrosoftMicrosoft Visual BasicVisual Basic, an expression always evaluates to a single result. Le espressioni in un elenco SELECT di Transact-SQLTransact-SQL seguono una variante di questa regola. L'espressione viene valutata singolarmente per ogni riga nel set di risultati.Expressions in a Transact-SQLTransact-SQL select list follow a variation on this rule: The expression is evaluated individually for each row in the result set. Una stessa espressione può avere un valore diverso in ogni riga del set di risultati, ma ogni riga include un solo valore per l'espressione.A single expression may have a different value in each row of the result set, but each row has only one value for the expression. Nell'istruzione SELECT seguente, ad esempio, il riferimento a ProductID e il termine 1+2 nell'elenco di selezione sono entrambi espressioni:For example, in the following SELECT statement both the reference to ProductID and the term 1+2 in the select list are expressions:

USE AdventureWorks2012;  
GO  
SELECT ProductID, 1+2  
FROM Production.Product;  
GO  

L'espressione 1+2 restituisce 3 in ogni riga del set di risultati.The expression 1+2 evaluates to 3 in each row in the result set. Sebbene l'espressione ProductID generi un valore univoco in ogni riga del set di risultati, ogni riga include un solo valore per ProductID.Although the expression ProductID generates a unique value in each result set row, each row only has one value for ProductID.

Vedere ancheSee Also

AT TIME ZONE (Transact-SQL) AT TIME ZONE (Transact-SQL)
CASE (Transact-SQL) CASE (Transact-SQL)
CAST e CONVERT (Transact-SQL) CAST and CONVERT (Transact-SQL)
COALESCE (Transact-SQL) COALESCE (Transact-SQL)
Conversione del tipo di dati (Motore di database) Data Type Conversion (Database Engine)
Precedenza dei tipi di dati (Transact-SQL) Data Type Precedence (Transact-SQL)
Tipi di dati (Transact-SQL) Data Types (Transact-SQL)
Funzioni predefinite (Transact-SQL) Built-in Functions (Transact-SQL)
LIKE (Transact-SQL) LIKE (Transact-SQL)
NULLIF (Transact-SQL) NULLIF (Transact-SQL)
SELECT (Transact-SQL) SELECT (Transact-SQL)
WHERE (Transact-SQL)WHERE (Transact-SQL)