SELECT Clause (Transact-SQL)

Specifica le colonne che devono essere restituite dalla query.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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 ] 

Argomenti

  • ALL
    Specifica che nel set di risultati possono essere visualizzate righe duplicate. Il valore predefinito è ALL.

  • DISTINCT
    Specifica che nel set di risultati devono essere visualizzate solo righe univoche. I valori Null vengono considerati valori uguali.

  • 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. expression può specificare un numero o una percentuale delle righe.

    L'utilizzo di TOP expression senza parentesi nelle istruzioni SELECT è supportato per compatibilità con le versioni precedenti, ma non è tuttavia consigliato. Per ulteriori informazioni, vedere TOP (Transact-SQL).

  • < select_list >
    Colonne che si desidera selezionare per il set di risultati. Tale elenco è una serie di espressioni separate da virgola Il numero massimo di espressioni che è possibile specificare nell'elenco selezionato è 4096.

  • *
    Specifica che devono essere restituite tutte le colonne di tutte le tabelle e viste elencate nella clausola FROM. 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.

  • table_name | view_name | table_alias.*
    Limita l'ambito dell'argomento * alla tabella o vista specificata.

  • column_name
    Nome della colonna da restituire. 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. Ad esempio, entrambe le tabelle SalesOrderHeader e SalesOrderDetail nel database AdventureWorks2008R2 hanno una colonna 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.

  • expression
    Costante, funzione o qualsiasi combinazione di nomi di colonna, costanti e funzioni concatenati da uno o più operatori oppure da una subquery.

  • $IDENTITY
    Restituisce la colonna Identity. Per ulteriori informazioni, vedere IDENTITY (proprietà) (Transact-SQL), ALTER TABLE (Transact-SQL) e 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.

  • $ROWGUID
    Restituisce la colonna GUID della riga.

    Se più tabelle della clausola FROM includono la proprietà ROWGUIDCOL, è necessario qualificare $ROWGUID con il nome della tabella, ad esempio T1.$ROWGUID.

  • udt_column_name
    Nome di colonna CLR (Common Language Runtime) definito dall'utente da restituire.

    Nota

    SQL Server Management Studio restituisce i valori dei tipi definiti dall'utente in una rappresentazione binaria. Per restituire i valori dei tipi definiti dall'utente in formato XML o stringa, utilizzare CAST o CONVERT.

  • { . | :: }
    Specifica un metodo, una proprietà o un campo CLR definito dall'utente. Utilizzare . per metodi, proprietà o campi (non statici) di un'istanza. Utilizzare :: per metodi, proprietà o campi statici. Per richiamare un metodo, una proprietà o un campo CLR definito dall'utente, è necessario disporre dell'autorizzazione EXECUTE per il tipo.

  • property_name
    Proprietà pubblica di udt_column_name.

  • field_name
    Membro dei dati pubblici di udt_column_name.

  • method_name
    Metodo pubblico di udt_column_name che accetta uno o più argomenti. method_name non può essere un metodo mutatore.

    Nell'esempio seguente vengono selezionati i valori per la colonna Location, definita come tipo point, dalla tabella Cities, richiamando un metodo del tipo Distance:

    CREATE TABLE 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_ alias
    Nome alternativo per la colonna specificata nel set di risultati della query. Per una colonna denominata quantity, ad esempio, è possibile specificare come alias Quantity, Quantity to Date o Qty.

    Gli alias vengono utilizzati inoltre come nomi dei risultati di espressioni, ad esempio:

    USE AdventureWorks2008R2;

    GO

    SELECT AVG(UnitPrice) AS 'Average Price'

    FROM Sales.SalesOrderDetail;

    È possibile utilizzare column_alias in una clausola ORDER BY, ma non in una clausola WHERE, GROUP BY o HAVING. Se l'espressione della query fa parte di un'istruzione DECLARE CURSOR, non è possibile includere l'argomento column_alias nella clausola FOR UPDATE.

Osservazioni

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. Per modificare la lunghezza del testo restituito per una sessione, utilizzare l'istruzione SET. Per impostazione predefinita il limite della lunghezza dei dati di testo restituiti con un'istruzione SELECT è pari a 4.000 byte.

In Motore di database di SQL Server viene generata l'eccezione 511 e viene eseguito il rollback dell'istruzione in fase di esecuzione se si verifica una delle condizioni seguenti:

  • L'istruzione SELECT produce una riga di risultati o una tabella di lavoro intermedia di dimensioni superiori a 8.060 byte.

  • L'istruzione DELETE, INSERT o UPDATE tenta di eseguire un'azione in una riga di dimensioni superiori a 8.060 byte.

Se non si assegna un nome a una colonna creata con un'istruzione SELECT INTO o CREATE VIEW, viene generato un errore.