Выражение SELECT (Transact-SQL)

Указывает столбцы, возвращаемые запросом.

Значок ссылки на разделСоглашение о синтаксисе в Transact-SQL

Синтаксис

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 ] 

Аргументы

  • ALL
    Указывает, что в результирующем наборе могут появиться повторяющиеся строки. ALL является значением по умолчанию.

  • DISTINCT
    Указывает, что в результирующем наборе могут появиться только уникальные строки. Значения NULL считаются равными для ключевого слова DISTINCT.

  • TOP ( expression ) [ PERCENT ] [ WITH TIES ]
    Указывает на то, что только заданное число или процент строк будет возвращен из результирующего набора запроса. Аргумент expression может быть либо числом, либо процентом строк.

    В целях обратной совместимости использование TOP expression без скобок в инструкциях SELECT поддерживается, но не рекомендуется. Дополнительные сведения см. в разделе TOP (Transact-SQL).

  • < select_list >
    Столбцы, выбираемые для результирующего набора. Список выбора представляет собой серию выражений, отделяемых запятыми. Максимальное число выражений, которое можно задать в списке выбора — 4 096.

  • *
    Указывает на то, что все столбцы из всех таблиц и представлений в предложении FROM должны быть возвращены. Столбцы возвращаются таблицей или представлением, как указано в предложении FROM, и в порядке, в котором они находятся в таблице или представлении.

  • table_name | view_name | table_alias.*
    Ограничивает область * до указанной таблицы или представления.

  • column_name
    Имя возвращаемого столбца. Указывайте квалификатор для аргумента column_name в целях избежания неоднозначности ссылок, которые могут возникнуть, если в двух таблицах из предложения FROM содержатся столбцы с одинаковыми именами. Например таблицы SalesOrderHeader и SalesOrderDetail в базе данных AdventureWorks содержат столбцы с именем ModifiedDate. Если в запросе соединяются две таблицы, то данные о дате изменения из таблицы SalesOrderDetail могут быть заданы в списке выбора как SalesOrderDetail.ModifiedDate.

  • expression
    Является константой, функцией, любым сочетанием имен столбцов, констант и функций, соединенных оператором (операторами) или вложенным запросом.

  • $IDENTITY
    Возвращает столбец идентификаторов. Дополнительные сведения см. в разделах IDENTITY (свойство) (Transact-SQL), ALTER TABLE (Transact-SQL) и Инструкция CREATE TABLE (Transact-SQL).

    Если более чем одна таблица из предложения FROM содержит столбец со свойством IDENTITY, $IDENTITY должно быть задано с определенным именем таблицы, например T1.$IDENTITY.

  • $ROWGUID
    Возвращает GUID столбец строки.

    Если более чем одна таблица из предложения FROM содержит столбец со свойством ROWGUIDCOL, $ROWGUIDCOL должно быть задано с определенным именем таблицы, например T1.$IDENTITY.

  • udt_column_name
    Имя возвращаемого определяемого пользователем типа общеязыковой среды исполнения (CLR) столбца.

    ПримечаниеПримечание

    Среда SQL Server Management Studio возвращает значения определяемого пользователем типа в двоичном представлении. Чтобы вернуть значения определяемого пользователем типа в виде строки или в формате XML, используйте CAST или CONVERT.

  • { . | :: }
    Указывает метод, свойство или поле определяемого пользователем типа CLR. Используйте . для метода экземпляра (нестатического), свойства или поля. Используйте :: для статического метода, свойства или поля. Для обращения к методу, свойству или полю определяемого пользователем типа CLR необходимо разрешение EXECUTE для этого типа.

  • property_name
    Общее свойство udt_column_name.

  • field_name
    Общий член данных udt_column_name.

  • method_name
    Общий метод udt_column_name, который принимает один или более аргументов. Метод method_name не может быть методом-мутатором.

    В следующем примере выбираются значения столбца Location, определенного типом point, из таблицы Cities путем обращения к методу типа, названного 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
    Альтернативное имя, которым можно заменить имя столбца в результирующем наборе запроса. Например, для столбца «quantity» может быть указан псевдоним «Quantity», «Quantity to Date» или «Qty».

    Кроме того, псевдонимы используются для указания имен для результатов выражений, например:

    USE AdventureWorks;

    GO

    SELECT AVG(UnitPrice) AS 'Average Price'

    FROM Sales.SalesOrderDetail;

    column_alias может быть использован в предложении ORDER BY. Однако он не может быть использован в предложениях WHERE, GROUP BY или HAVING. Если выражение запроса является частью инструкции DECLARE CURSOR, column_alias не может быть использован в предложении FOR UPDATE.

Замечания

Длина возвращаемых данных для столбцов типа text или ntext, включенных в список выбора, устанавливается в минимальное значение из следующих: реальный размер столбца типа text, значение настройки TEXTSIZE сеанса по умолчанию или жестко запрограммированное ограничение. Чтобы изменить длину возвращаемого текста для сеанса, используйте инструкцию SET. По умолчанию ограничение на длину возвращаемых при помощи инструкции SELECT текстовых данных равно 4 000 байт.

Компонент SQL Server Database Engine вызывает исключение номер 511 и осуществляет откат транзакции до момента выполнения текущей инструкции, если наблюдается одно из следующих явлений.

  • Следствием инструкции SELECT является строка результата или строка промежуточной таблицы, превышающая 8 060 байт.

  • Инструкции DELETE, INSERT или UPDATE производят действия со строкой, превышающей 8 060 байт.

Ошибка возникает в случае, если не указано имя столбца, созданного при помощи инструкции SELECT INTO или CREATE VIEW.