Klauzule SELECT (Transact-SQL)

Platí pro:SQL ServerAzure SQL DatabaseSpravovaná instance Azure SQLKoncový bod analýzy SQL v Microsoft FabricSklad v Microsoft FabricDatabáze SQL v Microsoft Fabric

Určuje sloupce, které vrátí dotaz Transact-SQL (T-SQL).

Transact-SQL konvence syntaxe

Syntax

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 ]

Arguments

ALL

Určuje, že v sadě výsledků se můžou zobrazit duplicitní řádky. ALL je výchozí.

DISTINCT

Určuje, že v sadě výsledků se můžou zobrazit pouze jedinečné řádky. Hodnoty Null jsou považovány za stejné pro účely klíčového DISTINCT slova.

TOP (výraz) [ PERCENT ] [ WITH TIES ]

Označuje, že ze sady výsledků dotazu se vrátí pouze zadaná první sada nebo procento řádků. výraz může být číslo nebo procento řádků.

I když TOP <expression> se v příkazech pro zpětnou kompatibilitu podporuje SELECT bez závorek, vyhněte se této syntaxi. Další informace najdete v tématu TOP.

<select_list>

Určuje sloupce, které se mají vybrat pro sadu výsledků. Výběrový seznam je řada výrazů oddělených čárkami. Maximální počet výrazů, které můžete zadat v seznamu výběrů, je 4 096.

*

Určuje, že se mají vrátit všechny sloupce ze všech tabulek a zobrazení v FROM klauzuli. Sloupce jsou vráceny tabulkou nebo zobrazením, jak je uvedeno v FROM klauzuli, a v pořadí, ve kterém existují v tabulce nebo zobrazení.

| table_name | view_nametable_alias.*

Omezuje rozsah * na zadanou tabulku nebo zobrazení.

column_name

Název sloupce, který se má vrátit. Opravňuje column_name , aby se zabránilo nejednoznačnému odkazu, například když dvě tabulky v FROM klauzuli mají sloupce s duplicitními názvy. Například tabulky SalesOrderHeader v SalesOrderDetailAdventureWorks2025 databázi mají sloupec s názvem ModifiedDate. Pokud jsou dvě tabulky spojené v dotazu, můžete zadat změněné datum SalesOrderDetail položek v seznamu výběru jako SalesOrderDetail.ModifiedDate.

expression

Konstanta, funkce, libovolná kombinace názvů sloupců, konstant a funkcí spojených operátorem nebo operátory nebo poddotazem.

$IDENTITY

Vrátí sloupec identity. Další informace naleznete v tématu IDENTITY (Vlastnost),ALTER TABLE a CREATE TABLE.

Pokud má v FROM klauzuli více než jednu tabulku sloupec s IDENTITY vlastností, musíte kvalifikovat $IDENTITY s konkrétním názvem tabulky, například T1.$IDENTITY.

$ROWGUID

Vrátí sloupec GUID řádku.

Pokud má vlastnost více než jedna tabulka v FROM klauzuli ROWGUIDCOL , musíte kvalifikovat $ROWGUID s konkrétním názvem tabulky, například T1.$ROWGUID.

udt_column_name

Název sloupce uživatelem definovaného uživatelem definovaného modulem CLR (Common Language Runtime) pro vrácení.

Note

SQL Server Management Studio vrátí uživatelem definované hodnoty typu v binární reprezentaci. Chcete-li vrátit uživatelem definované hodnoty typu ve formátu řetězce nebo XML, použijte cast a CONVERT nebo CAST a CONVERT.

{ . | :: }

Určuje metodu, vlastnost nebo pole uživatelem definovaného typu CLR. Pro metodu, vlastnost nebo pole instance (nonstatic) použijte tečku (.). Pro statickou metodu, vlastnost nebo pole použijte dvojtečku (::). Chcete-li vyvolat metodu, vlastnost nebo pole uživatelem definovaného typu CLR, musíte mít EXECUTE oprávnění k typu.

property_name

Veřejná nemovitost udt_column_name.

field_name

Veřejný datový člen udt_column_name.

method_name

Veřejná metoda udt_column_name , která přebírá jeden nebo více argumentů. method_name nemůže být metoda mutátoru.

Následující příklad vybere hodnoty sloupce Location definovaného jako bod typu z Cities tabulky vyvoláním metody s názvem Distance:

CREATE TABLE dbo.Cities
(
    Name VARCHAR (20),
    State VARCHAR (20),
    Location POINT
);
GO

DECLARE @p AS POINT (32, 23),
        @distance AS FLOAT;

SELECT Location.Distance(@p)
FROM Cities;

column_alias

Alternativní název, který nahradí název sloupce v sadě výsledků dotazu. Například alias, například Quantity, nebo Quantity do Date, nebo Qty lze zadat pro sloupec s názvem quantity.

Aliasy můžete použít k určení názvů výsledků výrazů, například:

USE AdventureWorks2025;
GO

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

column_alias lze použít v ORDER BY klauzuli. Nemůžete ho ale použít v klauzuli WHERE, GROUP BYnebo HAVING klauzuli. Pokud je výraz dotazu součástí DECLARE CURSOR příkazu, column_alias nelze v klauzuli FOR UPDATE použít.

Remarks

Pokud do seznamu výběru zahrnete textové nebo ntextové sloupce, bude délka vrácených dat nejmenší hodnotou následujících možností:

  • skutečná velikost textového sloupce,
  • výchozí TEXTSIZE nastavení relace nebo
  • pevně zakódovaný limit aplikace.

Pokud chcete změnit délku vráceného textu relace, použijte příkaz SET . Ve výchozím nastavení je limit délky textových dat vrácených příkazem SELECT 4 000 bajtů.

Databázový stroj SQL Serveru vyvolá výjimku 511 a vrátí zpět aktuální spuštěný příkaz, pokud dojde k některému z následujících chování:

  • Příkaz SELECT vytvoří výsledný řádek nebo zprostředkující řádek pracovní tabulky, který překračuje 8 060 bajtů.

  • Příkaz DELETE, INSERTnebo UPDATE se pokusí provést akci na řádku, který překračuje 8 060 bajtů.

K chybě dojde, pokud nezadáte název sloupce vytvořeného SELECT INTO pomocí příkazu nebo CREATE VIEW sloupce.