SELECT 句 (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric の SQL 分析エンドポイント
Microsoft Fabric のウェアハウス
クエリで返される列を指定します。
構文
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 ]
Note
SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。
引数
ALL
結果セットに重複した行を含むことを指定します。 ALL が既定値です。
DISTINCT
結果セットに一意な行のみを含むことを指定します。 NULL 値は、DISTINCT キーワードにおいて等しいと見なされます。
TOP (expression ) [ 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 ユーザー定義型のメソッド、プロパティ、またはフィールドを指定します。 インスタンス (静的ではない) メソッド、プロパティ、フィールド には . を使用します。 静的なメソッド、プロパティ、フィールドには :: を使用します。 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 を使用することはできません。
解説
選択リストに含まれる text または ntext 列に対して返されるデータの長さは、text 列の実際のサイズ、既定の TEXTSIZE セッションの設定値、またはハードコーディングされたアプリケーションの制限値のうちの最小値に設定されます。 セッション用に、返されるテキストの長さを変更するには、SET ステートメントを使ってください。 既定では、SELECT ステートメントが返すテキスト データの長さの制限は 4,000 バイトです。
次の動作のいずれかが発生した場合、SQL Server データベース エンジンでは例外 511 が発生し、現在実行中のステートメントがロールバックされます。
SELECT ステートメントで、8,060 バイトを超える結果行または中間作業テーブル行を生成した場合
DELETE、INSERT、または UPDATE ステートメントを、8,060 バイトを超える行で実行しようとした場合
SELECT INTO ステートメントまたは CREATE VIEW ステートメントで作成された列に列名が付いていない場合は、エラーが発生します。
参照
SELECT の例 (Transact-SQL)
式 (Transact-SQL)
SELECT (Transact-SQL)