SELECT Clause (Transact-SQL)SELECT Clause (Transact-SQL)

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

Specifica le colonne che devono essere restituite dalla query.Specifies the columns to be returned by the query.

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

SintassiSyntax

  
SELECT [ ALL | DISTINCT ]  
[ TOP ( expression ) [ PERCENT ] [ WITH TIES ] ]   
<select_list>   
<select_list> ::=   
    {   
      *   
      | { table_name | view_name | table_alias }.*   
      | {  
          [ { table_name | view_name | table_alias }. ]  
               { column_name | $IDENTITY | $ROWGUID }   
          | udt_column_name [ { . | :: } { { property_name | field_name }   
            | method_name ( argument [ ,...n] ) } ]  
          | expression  
          [ [ AS ] column_alias ]   
         }  
      | column_alias = expression   
    } [ ,...n ]   

ArgomentiArguments

ALLALL
Specifica che nel set di risultati possono essere visualizzate righe duplicate.Specifies that duplicate rows can appear in the result set. Il valore predefinito è ALL.ALL is the default.

DISTINCTDISTINCT
Specifica che nel set di risultati devono essere visualizzate solo righe univoche.Specifies that only unique rows can appear in the result set. I valori Null vengono considerati valori uguali.Null values are considered equal for the purposes of the DISTINCT keyword.

TOP (expression ) [ PERCENT ] [ WITH TIES ]TOP (expression ) [ PERCENT ] [ WITH TIES ]
Indica che dal set di risultati della query verrà restituito solamente un primo set specificato o una prima percentuale di righe specificata.Indicates that only a specified first set or percent of rows will be returned from the query result set. Il valore diexpression può essere specificato come numero o come percentuale di righe.expression can be either a number or a percent of the rows.

L'uso di TOP expression senza parentesi nelle istruzioni SELECT è supportato per compatibilità con le versioni precedenti, ma non è consigliato.For backward compatibility, using the TOP expression without parentheses in SELECT statements is supported, but we do not recommend it. Per altre informazioni, vedere TOP (Transact-SQL).For more information, see TOP (Transact-SQL).

< select_list > Colonne che si vuole selezionare per il set di risultati.< select_list > The columns to be selected for the result set. Tale elenco è una serie di espressioni separate da virgolaThe select list is a series of expressions separated by commas. Il numero massimo di espressioni che è possibile specificare nell'elenco selezionato è 4096.The maximum number of expressions that can be specified in the select list is 4096.

*
Specifica che devono essere restituite tutte le colonne di tutte le tabelle e viste elencate nella clausola FROM.Specifies that all columns from all tables and views in the FROM clause should be returned. Le colonne vengono restituite in base alla tabella o vista, a seconda di quanto specificato nella clausola FROM, nello stesso ordine in cui sono visualizzate nella tabella o vista.The columns are returned by table or view, as specified in the FROM clause, and in the order in which they exist in the table or view.

table_name | view_name | tablealias.*table_name | view_name | tablealias.*
Limita l'ambito dell'argomento * alla tabella o vista specificata.Limits the scope of the * to the specified table or view.

column_namecolumn_name
Nome della colonna da restituire.Is the name of a column to return. Qualificare l'argomento column_name in modo da impedire riferimenti ambigui, come nel caso di due tabelle della clausola FROM che includono colonne con nomi duplicati.Qualify column_name to prevent an ambiguous reference, such as occurs when two tables in the FROM clause have columns with duplicate names. Ad esempio, entrambe le tabelle SalesOrderHeader e SalesOrderDetail nel database AdventureWorks2012AdventureWorks2012 hanno una colonna ModifiedDate.For example, the SalesOrderHeader and SalesOrderDetail tables in the AdventureWorks2012AdventureWorks2012 database both have a column named ModifiedDate. Se le due tabelle sono unite in join in una query, la data modificata delle voci SalesOrderDetail può essere specificata nell'elenco di selezione come SalesOrderDetail.ModifiedDate.If the two tables are joined in a query, the modified date of the SalesOrderDetail entries can be specified in the select list as SalesOrderDetail.ModifiedDate.

expressionexpression
Costante, funzione o qualsiasi combinazione di nomi di colonna, costanti e funzioni collegati da uno o più operatori oppure da una sottoquery.Is a constant, function, any combination of column names, constants, and functions connected by an operator or operators, or a subquery.

$IDENTITY$IDENTITY
Restituisce la colonna Identity.Returns the identity column. Per altre informazioni, vedere IDENTITY (Property) (Transact-SQL), ALTER TABLE (Transact-SQL) e CREATE TABLE (Transact-SQL).For more information, see IDENTITY (Property) (Transact-SQL), ALTER TABLE (Transact-SQL), and CREATE TABLE (Transact-SQL).

Se più tabelle della clausola FROM includono una colonna con la proprietà IDENTITY, è necessario qualificare la funzione $IDENTITY con il nome della tabella, ad esempio T1.$IDENTITY.If more than one table in the FROM clause has a column with the IDENTITY property, $IDENTITY must be qualified with the specific table name, such as T1.$IDENTITY.

$ROWGUID$ROWGUID
Restituisce la colonna GUID della riga.Returns the row GUID column.

Se più tabelle della clausola FROM includono la proprietà ROWGUIDCOL, è necessario qualificare $ROWGUID con il nome della tabella, ad esempio T1.$ROWGUID.If there is more than one table in the FROM clause with the ROWGUIDCOL property, $ROWGUID must be qualified with the specific table name, such as T1.$ROWGUID.

udt_column_nameudt_column_name
Nome di colonna CLR (Common Language Runtime) definito dall'utente da restituire.Is the name of a common language runtime (CLR) user-defined type column to return.

Nota

SQL Server Management StudioSQL Server Management Studio restituisce i valori dei tipi definiti dall'utente in una rappresentazione binaria.returns user-defined type values in binary representation. Per restituire i valori dei tipi definiti dall'utente in formato XML o stringa, usare CAST o CONVERT.To return user-defined type values in string or XML format, use CAST or CONVERT.

{ .{ . | :: }| :: }
Specifica un metodo, una proprietà o un campo CLR definito dall'utente.Specifies a method, property, or field of a CLR user-defined type. Usare .Use . per metodi, proprietà o campi (non statici) di un'istanza.for an instance (nonstatic) method, property, or field. Utilizzare :: per metodi, proprietà o campi statici.Use :: for a static method, property, or field. Per richiamare un metodo, una proprietà o un campo di un tipo CLR definito dall'utente, è necessario disporre dell'autorizzazione EXECUTE per il tipo.To invoke a method, property, or field of a CLR user-defined type, you must have EXECUTE permission on the type.

property_nameproperty_name
Proprietà pubblica di udt_column_name.Is a public property of udt_column_name.

field_namefield_name
Membro dati pubblico di udt_column_name.Is a public data member of udt_column_name.

method_namemethod_name
Metodo pubblico di udt_column_name che accetta uno o più argomenti.Is a public method of udt_column_name that takes one or more arguments. method_name non può essere un metodo mutatore.method_name cannot be a mutator method.

Nell'esempio seguente vengono selezionati i valori per la colonna Location, definita come tipo point, dalla tabella Cities, richiamando un metodo del tipo Distance:The following example selects the values for the Location column, defined as type point, from the Cities table, by invoking a method of the type called Distance:

CREATE TABLE dbo.Cities (  
     Name varchar(20),  
     State varchar(20),  
     Location point );  
GO  
DECLARE @p point (32, 23), @distance float;  
GO  
SELECT Location.Distance (@p)  
FROM Cities;  

column_ aliascolumn_ alias
Nome alternativo per la colonna specificata nel set di risultati della query.Is an alternative name to replace the column name in the query result set. Per una colonna denominata quantity, ad esempio, è possibile specificare come alias Quantity, Quantity to Date o Qty.For example, an alias such as Quantity, or Quantity to Date, or Qty can be specified for a column named quantity.

Gli alias vengono utilizzati inoltre come nomi dei risultati di espressioni, ad esempio:Aliases are used also to specify names for the results of expressions, for example:

USE AdventureWorks2012;  
GO  
SELECT AVG(UnitPrice) AS [Average Price]  
FROM Sales.SalesOrderDetail;

È possibile usare column_alias in una clausola ORDER BY,column_alias can be used in an ORDER BY clause. ma non in una clausola WHERE, GROUP BY o HAVING.However, it cannot be used in a WHERE, GROUP BY, or HAVING clause. Se l'espressione della query fa parte di un'istruzione DECLARE CURSOR, non è possibile usare l'argomento column_alias nella clausola FOR UPDATE.If the query expression is part of a DECLARE CURSOR statement, column_alias cannot be used in the FOR UPDATE clause.

RemarksRemarks

La lunghezza dei dati restituiti per colonne di tipo text o ntext incluse nell'elenco di selezione viene impostata sul valore più basso tra i seguenti: dimensioni reali della colonna text, impostazione predefinita della sessione TEXTSIZE e limite dell'applicazione specificato a livello di codice.The length of data returned for text or ntext columns that are included in the select list is set to the smallest value of the following: the actual size of the text column, the default TEXTSIZE session setting, or the hard-coded application limit. Per modificare la lunghezza del testo restituito per una sessione, utilizzare l'istruzione SET.To change the length of returned text for the session, use the SET statement. Per impostazione predefinita il limite della lunghezza dei dati di testo restituiti con un'istruzione SELECT è pari a 4.000 byte.By default, the limit on the length of text data returned with a SELECT statement is 4,000 bytes.

In Motore di database di SQL ServerSQL Server Database Engine viene generata l'eccezione 511 e viene eseguito il rollback dell'istruzione in fase di esecuzione se si verifica una delle condizioni seguenti:The Motore di database di SQL ServerSQL Server Database Engine raises exception 511 and rolls back the current running statement if either of the following behavior occurs:

  • L'istruzione SELECT produce una riga di risultati o una tabella di lavoro intermedia di dimensioni superiori a 8.060 byte.The SELECT statement produces a result row or an intermediate work table row exceeding 8,060 bytes.

  • L'istruzione DELETE, INSERT o UPDATE tenta di eseguire un'azione in una riga di dimensioni superiori a 8.060 byte.The DELETE, INSERT, or UPDATE statement tries an action on a row exceeding 8,060 bytes.

Se non si assegna un nome a una colonna creata con un'istruzione SELECT INTO o CREATE VIEW, viene generato un errore.An error occurs if no column name is specified to a column created by a SELECT INTO or CREATE VIEW statement.

Vedere ancheSee Also

Esempi di istruzioni SELECT (Transact-SQL) SELECT Examples (Transact-SQL)
Espressioni (Transact-SQL) Expressions (Transact-SQL)
SELECT (Transact-SQL)SELECT (Transact-SQL)