適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
Microsoft Fabric プレビューの 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
結果セットに重複した行を含むことを指定します。 ALL が既定値です。
DISTINCT
結果セットに一意な行のみを含むことを指定します。 NULL 値は、DISTINCT キーワードにおいて等しいと見なされます。
TOP (式 ) [ PERCENT ] [ WITH TIES ]
クエリの結果セットから、指定された最初の行セットまたは比率 (%) に相当する行だけが返されることを示します。
expression は行数または行の比率 (%) にすることができます。
旧バージョンとの互換性を維持するため、SELECT ステートメント内でかっこを使用しないで TOP expression を使用する方法もサポートされていますが、この方法は推奨されていません。 詳しくは、「TOP (Transact-SQL)」をご覧ください。
<select_list> 結果セットに選択される列です。 選択リストは、コンマで区切られた一連の式です。 選択リストに指定できる式の最大数は、4,096 です。
*
FROM 句内のすべてのテーブルおよびビューの、すべての列を返すことを指定します。 列は、FROM 句に指定されているテーブルまたはビューの順に、テーブルまたはビュー内に並んでいる順序で返されます。
table_name | view_name | table_alias.*
* のスコープを、指定したテーブルまたはビューに限定します。
column_name
返される列の名前です。 FROM 句内の 2 つのテーブルに同じ名前の列がある場合などに参照先が混乱しないように、column_name を修飾します。 たとえば、AdventureWorks2022
データベース内の SalesOrderHeader テーブルおよび SalesOrderDetail テーブルの両方に ModifiedDate という名前の列があります。 クエリでこれら 2 つのテーブルを結合した場合、SalesOrderDetail エントリの変更日付を選択リストで SalesOrderDetail.ModifiedDate として指定できます。
expression
定数、関数、または列名、定数、関数を演算子で組み合わせたもの、あるいはサブクエリを指定します。
$IDENTITY
ID 列を返します。 詳細については、「IDENTITY (プロパティ) (Transact-SQL)」、「ALTER TABLE (Transact-SQL)」、および「CREATE TABLE (Transact-SQL)」を参照してください。
FROM 句内の複数のテーブルが IDENTITY プロパティを備えた列を持つ場合は、T1.$IDENTITY などのように、$IDENTITY を指定のテーブル名で修飾する必要があります。
$ROWGUID
行 GUID 列を返します。
FROM 句内の複数のテーブルが ROWGUIDCOL プロパティを持つ場合は、T1.$ROWGUID などのように、$ROWGUID を指定のテーブル名で修飾する必要があります。
udt_column_name
返される共通言語ランタイム (CLR) ユーザー定義型列の名前です。
Note
SQL Server Management Studio は、ユーザー定義型の値をバイナリ表記で返します。 ユーザー定義型の値を文字列または XML 形式で返すには、CAST または CONVERT を使用します。
{ . |:: }
CLR ユーザー定義型のメソッド、プロパティ、またはフィールドを指定します。 Use . には . を使用します。 静的なメソッド、プロパティ、フィールドには :: を使用します。 CLR ユーザー定義型のメソッド、プロパティ、またはフィールドを呼び出すには、その型に対する EXECUTE 権限が必要です。
property_name
udt_column_name のパブリック プロパティを指定します。
field_name
udt_column_name のパブリック データ メンバーを指定します。
method_name
1 つ以上の引数を使用する udt_column_name のパブリック メソッドを指定します。
method_name をミューテーター メソッドにすることはできません。
次の例では、Location
という名前のメソッドを呼び出すことにより、point
型として定義されている Cities
列に対する値を 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_alias
クエリの結果セット内の列名を置き換える別名です。 たとえば、quantity という名前の列に対して、Quantity、Quantity to Date、Qty などの別名を指定できます。
別名を使用して、式の結果の名前を指定することもできます。たとえば、次のようにします。
USE AdventureWorks2022;
GO
SELECT AVG(UnitPrice) AS [Average Price]
FROM Sales.SalesOrderDetail;
column_alias は、ORDER BY 句の中で使用できます。 ただし、WHERE 句、GROUP BY 句、または HAVING 句の中では使用できません。 クエリ式が DECLARE CURSOR ステートメントに含まれている場合、FOR UPDATE 句の中で column_alias を使用することはできません。
Remarks
選択リストに含まれる text または ntext 列に対して返されるデータの長さは、text 列の実際のサイズ、既定の TEXTSIZE セッションの設定値、またはハードコーディングされたアプリケーションの制限値のうちの最小値に設定されます。 セッション用に、返されるテキストの長さを変更するには、SET ステートメントを使ってください。 既定では、SELECT ステートメントが返すテキスト データの長さの制限は 4,000 バイトです。
次の動作のいずれかが発生した場合、SQL Server データベース エンジンでは例外 511 が発生し、現在実行中のステートメントがロールバックされます。
SELECT ステートメントで、8,060 バイトを超える結果行または中間作業テーブル行を生成した場合
DELETE、INSERT、または UPDATE ステートメントを、8,060 バイトを超える行で実行しようとした場合
SELECT INTO ステートメントまたは CREATE VIEW ステートメントで作成された列に列名が付いていない場合は、エラーが発生します。
See Also
SELECT の例 (Transact-SQL)
Expressions (Transact-SQL)
SELECT (Transact-SQL)