次の方法で共有


SELECT 句 (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric の SQL 分析エンドポイントMicrosoft Fabric のウェアハウスMicrosoft Fabric の SQL データベース

Transact-SQL (T-SQL) クエリが返す列を指定します。

Transact-SQL 構文表記規則

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 はデフォルト値です。

DISTINCT

結果セットに一意な行のみを含むことを指定します。 null 値は、 DISTINCT キーワードの目的で等しいと見なされます。

TOP () [ PERCENT ] [ WITH TIES ]

指定した最初のセットまたは行の割合のみがクエリ結果セットから返されることを示します。 expression は行数または行の比率 (%) にすることができます。

下位互換性のために、SELECT ステートメントではかっこなしのTOP <expression>がサポートされていますが、この構文は使用しないでください。 詳細については、「TOP」を参照してください。

<select_list>

結果セットに対して選択する列を指定します。 選択リストは、コンマで区切られた一連の式です。 選択リストで指定できる式の最大数は 4,096 です。

*

FROM句のすべてのテーブルとビューのすべての列を返すように指定します。 列は、 FROM 句で指定されたテーブルまたはビューによって、テーブルまたはビューに存在する順序で返されます。

table_name | view_name | table_alias.*

* のスコープを、指定したテーブルまたはビューに限定します。

column_name

返す列の名前。 FROM句の 2 つのテーブルに重複する名前の列がある場合など、あいまいな参照を防ぐためにcolumn_nameを修飾します。 たとえば、AdventureWorks2025 データベースの SalesOrderHeader テーブルと SalesOrderDetail テーブルの両方に、ModifiedDate という名前の列があります。 2 つのテーブルがクエリで結合されている場合は、選択リストの SalesOrderDetail エントリの変更日を SalesOrderDetail.ModifiedDateとして指定できます。

expression

定数、関数、演算子または演算子によって接続された列名、定数、関数の任意の組み合わせ、またはサブクエリ。

$IDENTITY

ID 列を返します。 詳細については、「 IDENTITY (プロパティ)ALTER TABLECREATE TABLE」を参照してください。

FROM句の複数のテーブルに IDENTITY プロパティを持つ列がある場合は、T1.$IDENTITYなど、特定のテーブル名で$IDENTITYを修飾する必要があります。

$ROWGUID

行 GUID 列を返します。

FROM句の複数のテーブルに ROWGUIDCOL プロパティがある場合は、T1.$ROWGUIDなどの特定のテーブル名で$ROWGUIDを修飾する必要があります。

udt_column_name

返す共通言語ランタイム (CLR) ユーザー定義型列の名前。

Note

SQL Server Management Studio は、ユーザー定義型の値をバイナリ表記で返します。 ユーザー定義の型値を文字列または XML 形式で返すには、 CAST、CONVERTCAST、CONVERT、CONVERT を使用します。

{ . |:: }

CLR ユーザー定義型のメソッド、プロパティ、またはフィールドを指定します。 インスタンス (非静的) メソッド、プロパティ、またはフィールドにピリオド (.) を使用します。 静的メソッド、プロパティ、またはフィールドには、二重コロン (::) を使用します。 CLR ユーザー定義型のメソッド、プロパティ、またはフィールドを呼び出すには、その型に対する EXECUTE 権限が必要です。

property_name

udt_column_nameのパブリック プロパティ。

field_name

udt_column_nameのパブリック データ メンバー。

method_name

1 つ以上の引数を受け取る udt_column_name のパブリック メソッド。 method_name ミューテーター メソッドにすることはできません。

次の例では、Distance という型のメソッドを呼び出して、Cities テーブルから型ポイントとして定義されたLocation列の値を選択します。

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

クエリ結果セット内の列名を置き換える代替名。 たとえば、QuantityDateQuantityなどのエイリアス、quantityという名前の列にQtyを指定できます。

エイリアスを使用して、式の結果の名前を指定できます。次に例を示します。

USE AdventureWorks2025;
GO

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

column_alias は、 ORDER BY 句で使用できます。 ただし、 WHEREGROUP BY、または HAVING 句では使用できません。 クエリ式がDECLARE CURSORステートメントの一部である場合、column_aliasFOR UPDATE句では使用できません。

Remarks

選択リストに テキスト 列または ntext 列を含めると、返されるデータの長さは次のオプションの最小値になります。

  • テキスト列の実際のサイズ
  • 既定の TEXTSIZE セッション設定、または
  • ハードコーディングされたアプリケーションの制限。

セッションに返されるテキストの長さを変更するには、 SET ステートメントを使用します。 既定では、 SELECT ステートメントによって返されるテキスト データの長さの制限は 4,000 バイトです。

次のいずれかの動作が発生した場合、SQL Server データベース エンジンは例外 511 を発生させ、現在実行中のステートメントをロールバックします。

  • SELECT ステートメントは、8,060 バイトを超える結果行または中間作業テーブル行を生成します。

  • DELETEINSERT、またはUPDATEステートメントは、8,060 バイトを超える行に対してアクションを試行します。

SELECT INTOステートメントまたは CREATE VIEW ステートメントによって作成された列の列名を指定しないと、エラーが発生します。