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

適用対象: ○SQL Server ○Azure SQL Database XAzure SQL Data Warehouse XParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

クエリで返される列を指定します。Specifies the columns to be returned by the query.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文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

ALLALL
結果セットに重複した行を含むことを指定します。Specifies that duplicate rows can appear in the result set. ALL が既定値です。ALL is the default.

DISTINCTDISTINCT
結果セットに一意な行のみを含むことを指定します。Specifies that only unique rows can appear in the result set. NULL 値は、DISTINCT キーワードにおいて等しいと見なされます。Null values are considered equal for the purposes of the DISTINCT keyword.

TOP (expression ) [ PERCENT ] [ WITH TIES ]TOP (expression ) [ PERCENT ] [ WITH TIES ]
クエリの結果セットから、指定された最初の行セットまたは比率 (%) に相当する行だけが返されることを示します。Indicates that only a specified first set or percent of rows will be returned from the query result set. expression は行数または行の比率 (%) にすることができます。expression can be either a number or a percent of the rows.

旧バージョンとの互換性を維持するため、SELECT ステートメント内でかっこを使用しないで TOP expression を使用する方法もサポートされていますが、この方法は推奨されていません。For backward compatibility, using the TOP expression without parentheses in SELECT statements is supported, but we do not recommend it. 詳細については、「TOP (Transact-SQL)」を参照してください。For more information, see TOP (Transact-SQL).

< select_list > 結果セットに選択される列です。< select_list > The columns to be selected for the result set. 選択リストは、コンマで区切られた一連の式です。The select list is a series of expressions separated by commas. 選択リストに指定できる式の最大数は、4,096 です。The maximum number of expressions that can be specified in the select list is 4096.

*
FROM 句内のすべてのテーブルおよびビューの、すべての列を返すことを指定します。Specifies that all columns from all tables and views in the FROM clause should be returned. 列は、FROM 句に指定されているテーブルまたはビューの順に、テーブルまたはビュー内に並んでいる順序で返されます。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.*
* のスコープを、指定したテーブルまたはビューに限定します。Limits the scope of the * to the specified table or view.

column_namecolumn_name
返される列の名前です。Is the name of a column to return. FROM 句内の 2 つのテーブルに同じ名前の列がある場合などに参照先が混乱しないように、column_name を修飾します。Qualify column_name to prevent an ambiguous reference, such as occurs when two tables in the FROM clause have columns with duplicate names. たとえば、AdventureWorks2012AdventureWorks2012 データベース内の SalesOrderHeader テーブルおよび SalesOrderDetail テーブルの両方に ModifiedDate という名前の列があります。For example, the SalesOrderHeader and SalesOrderDetail tables in the AdventureWorks2012AdventureWorks2012 database both have a column named ModifiedDate. クエリでこれら 2 つのテーブルを結合した場合、SalesOrderDetail エントリの変更日付を選択リストで 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.

式 (expression)expression
定数、関数、または列名、定数、関数を演算子で組み合わせたもの、あるいはサブクエリを指定します。Is a constant, function, any combination of column names, constants, and functions connected by an operator or operators, or a subquery.

$IDENTITY$IDENTITY
ID 列を返します。Returns the identity column. 詳細については、「IDENTITY (プロパティ) (Transact-SQL)」、「ALTER TABLE (Transact-SQL)」、および「CREATE TABLE (Transact-SQL)」を参照してください。For more information, see IDENTITY (Property) (Transact-SQL), ALTER TABLE (Transact-SQL), and CREATE TABLE (Transact-SQL).

FROM 句内の複数のテーブルが IDENTITY プロパティを備えた列を持つ場合は、T1.$IDENTITY などのように、$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
行 GUID 列を返します。Returns the row GUID column.

FROM 句内の複数のテーブルが ROWGUIDCOL プロパティを持つ場合は、T1.$ROWGUID などのように、$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
返される共通言語ランタイム (CLR) ユーザー定義型列の名前です。Is the name of a common language runtime (CLR) user-defined type column to return.

注意

SQL Server Management StudioSQL Server Management Studio は、ユーザー定義型の値をバイナリ表記で返します。returns user-defined type values in binary representation. ユーザー定義型の値を文字列または XML 形式で返すには、CAST または CONVERT を使用します。To return user-defined type values in string or XML format, use CAST or CONVERT.

{ .{ . | :: }| :: }
CLR ユーザー定義型のメソッド、プロパティ、またはフィールドを指定します。Specifies a method, property, or field of a CLR user-defined type. インスタンス (静的ではない) メソッド、プロパティ、フィールドUse . には . を使用します。for an instance (nonstatic) method, property, or field. 静的なメソッド、プロパティ、フィールドには :: を使用します。Use :: for a static method, property, or field. CLR ユーザー定義型のメソッド、プロパティ、またはフィールドを呼び出すには、その型に対する EXECUTE 権限が必要です。To invoke a method, property, or field of a CLR user-defined type, you must have EXECUTE permission on the type.

property_nameproperty_name
udt_column_name のパブリック プロパティを指定します。Is a public property of udt_column_name.

field_namefield_name
udt_column_name のパブリック データ メンバーを指定します。Is a public data member of udt_column_name.

method_namemethod_name
1 つ以上の引数を使用する udt_column_name のパブリック メソッドを指定します。Is a public method of udt_column_name that takes one or more arguments. method_name をミューテーター メソッドにすることはできません。method_name cannot be a mutator method.

次の例では、Location という名前のメソッドを呼び出すことにより、point 型として定義されている Cities 列に対する値を 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
クエリの結果セット内の列名を置き換える別名です。Is an alternative name to replace the column name in the query result set. たとえば、quantity という名前の列に対して、Quantity、Quantity to Date、Qty などの別名を指定できます。For example, an alias such as Quantity, or Quantity to Date, or Qty can be specified for a column named quantity.

別名を使用して、式の結果の名前を指定することもできます。たとえば、次のようにします。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;

column_alias は、ORDER BY 句の中で使用できます。column_alias can be used in an ORDER BY clause. ただし、WHERE 句、GROUP BY 句、または HAVING 句の中では使用できません。However, it cannot be used in a WHERE, GROUP BY, or HAVING clause. クエリ式が DECLARE CURSOR ステートメントに含まれている場合、FOR UPDATE 句の中で column_alias を使用することはできません。If the query expression is part of a DECLARE CURSOR statement, column_alias cannot be used in the FOR UPDATE clause.

RemarksRemarks

選択リストに含まれる text または ntext 列に対して返されるデータの長さは、text 列の実際のサイズ、既定の TEXTSIZE セッションの設定値、またはハードコーディングされたアプリケーションの制限値のうちの最小値に設定されます。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. セッション用に、返されるテキストの長さを変更するには、SET ステートメントを使ってください。To change the length of returned text for the session, use the SET statement. 既定では、SELECT ステートメントが返すテキスト データの長さの制限は 4,000 バイトです。By default, the limit on the length of text data returned with a SELECT statement is 4,000 bytes.

次の動作のいずれかが発生した場合、SQL Server データベース エンジンSQL Server Database Engineでは例外 511 が発生し、現在実行中のステートメントがロールバックされます。The SQL Server データベース エンジンSQL Server Database Engine raises exception 511 and rolls back the current running statement if either of the following behavior occurs:

  • SELECT ステートメントで、8,060 バイトを超える結果行または中間作業テーブル行を生成した場合The SELECT statement produces a result row or an intermediate work table row exceeding 8,060 bytes.

  • DELETE、INSERT、または UPDATE ステートメントを、8,060 バイトを超える行で実行しようとした場合The DELETE, INSERT, or UPDATE statement tries an action on a row exceeding 8,060 bytes.

SELECT INTO ステートメントまたは CREATE VIEW ステートメントで作成された列に列名が付いていない場合は、エラーが発生します。An error occurs if no column name is specified to a column created by a SELECT INTO or CREATE VIEW statement.

参照See Also

SELECT の例 (Transact-SQL) SELECT Examples (Transact-SQL)
式 (Transact-SQL) Expressions (Transact-SQL)
SELECT (Transact-SQL)SELECT (Transact-SQL)