Выражение 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 в базе данных AdventureWorks2008R2 содержат столбцы с именем 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 AdventureWorks2008R2;

    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.