Espressioni (Transact-SQL)
Un'espressione è una combinazione di simboli e operatori che vengono valutati da Motore di database di SQL Server in modo da restituire un singolo valore di dati. Le espressioni semplici possono essere costituite da un'unica costante, variabile, colonna o funzione scalare. È possibile utilizzare gli operatori per unire due o più espressioni semplici in modo da ottenere un'espressione complessa.
Sintassi
{ constant | scalar_function | [ table_name. ] column | variable | (expression ) | (scalar_subquery )
| { unary_operator } expression
| expression { binary_operator } expression | ranking_windowed_function | aggregate_windowed_function
}
Argomenti
Nome |
Definizione |
---|---|
constant |
Simbolo che rappresenta un singolo valore di dati specifico. Per ulteriori informazioni, vedere Costanti (Transact-SQL). |
scalar_function |
Unità della sintassi Transact-SQL che fornisce un servizio specifico e restituisce un singolo valore. scalar_function può essere una funzione scalare predefinita, ad esempio SUM, GETDATE o CAST, oppure una funzione scalare definita dall'utente. |
[ table_name.] |
Nome o alias di una tabella. |
column |
Nome di colonna. In un'espressione è consentito soltanto il nome della colonna. |
variable |
Nome di una variabile o parametro. Per ulteriori informazioni, vedere DECLARE @local_variable (Transact-SQL). |
( expression ) |
Qualsiasi espressione valida, in base a quanto definito in questo argomento. 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. |
( scalar_subquery ) |
Sottoquery che restituisce un valore. Ad esempio: SELECT MAX(UnitPrice) FROM Products |
{ unary_operator } |
Operatore con un solo operando numerico:
Gli operatori unari possono essere applicati solo a espressioni che restituiscono un tipo di dati appartenente alla categoria dei tipi di dati numerici. |
{ binary_operator } |
Operatore che definisce la modalità in base a cui due espressioni vengono unite per ottenere un unico risultato. L'argomento 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. Per ulteriori informazioni sugli operatori, vedere Operatori (Transact-SQL). |
ranking_windowed_function |
Qualsiasi funzione di rango Transact-SQL. Per ulteriori informazioni, vedere Funzioni di rango (Transact-SQL). |
aggregate_windowed_function |
Qualsiasi funzione di aggregazione Transact-SQL con la clausola OVER. Per ulteriori informazioni, vedere Clausola OVER (Transact-SQL). |
Risultati dell'espressione
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.
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. Per ulteriori informazioni sui tipi di dati booleani, vedere Operatori di confronto (Transact-SQL).
Quando due espressioni vengono unite tramite operatori aritmetici, bit per bit o di stringa, il tipo di dati restituito dipende dall'operatore.
Le espressioni complesse costituite da più simboli e operatori restituiscono un unico valore. 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. La sequenza in base a cui vengono unite le espressioni è definita dall'ordine di precedenza degli operatori utilizzati nell'espressione.
Osservazioni
È possibile combinare due espressioni mediante un operatore se entrambe utilizzano tipi di dati supportati dall'operatore e se almeno una delle condizioni seguenti è vera:
Alle espressioni è applicato lo stesso tipo di dati.
Il tipo di dati con precedenza minore può essere convertito in modo implicito nel tipo di dati con precedenza maggiore.
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.
Se non sono supportate né la conversione implicita né quella esplicita, non è possibile combinare le due espressioni.
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. Per ulteriori informazioni, vedere Precedenza delle regole di confronto (Transact-SQL).
In un linguaggio di programmazione, ad esempio C o Microsoft Visual Basic, un'espressione restituisce sempre un unico risultato. Le espressioni in un elenco di selezione Transact-SQL seguono una variante di questa regola, in quanto vengono valutate singolarmente per ogni riga del set di risultati. 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. Nell'istruzione SELECT seguente, ad esempio, il riferimento a ProductID e il termine 1+2 nell'elenco di selezione sono entrambi espressioni:
USE AdventureWorks2008R2;
GO
SELECT ProductID, 1+2
FROM Production.Product;
GO
L'espressione 1+2 restituisce 3 in ogni riga del set di risultati. Sebbene l'espressione ProductID generi un valore univoco in ogni riga del set di risultati, ogni riga include un solo valore per ProductID.
Vedere anche