COLUMNPROPERTY (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
この関数は、列またはパラメーターの情報を返します。
構文
COLUMNPROPERTY ( id , column , property )
引数
id
テーブルまたはプロシージャの識別子 (ID) を含む式。
column
列またはパラメーターの名前を含む式。
property
id 引数の場合、property 引数は COLUMNPROPERTY
関数が返す情報の型を指定します。 property 引数は次のいずれかの値になります。
値 | 説明 | 返される値 |
---|---|---|
AllowsNull | NULL 値を許可します。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
ColumnId | sys.columns.column_id に対応する列の ID 値です。 | 列 ID 注: 複数の列に対してクエリを実行する場合、列の ID 値の順序にギャップが生じることがあります。 |
FullTextTypeColumn | column のドキュメント型情報を保持する、テーブル内の TYPE COLUMN。 | この関数の 2 番目のパラメーターとして渡される列名の式の、フルテキストの TYPE COLUMN の ID。 |
GeneratedAlwaysType | システムによって生成された列の値です。 sys.columns.generated_always_type に対応します | 適用対象: SQL Server 2016 (13.x) 以降。 0: 常に生成されなかった 1: 行の先頭として常に生成された 2: 行の終わりに常に生成された |
IsColumnSet | 列は列セットです。 詳細については、「 列セットの使用」を参照してください。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsComputed | 列は計算列です。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsCursorType | プロシージャ パラメーターは CURSOR 型です。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsDeterministic | 列は決定的です。 このプロパティは、計算列およびビュー列にのみ適用されます。 | 1:TRUE 0:FALSE NULL: 無効な入力 (計算列またはビュー列ではありません) |
IsFulltextIndexed | 列はフルテキスト インデックス作成用に登録されます。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsHidden | システムによって生成された列の値です。 sys.columns.is_hidden に対応します | 適用対象: SQL Server 2016 (13.x) 以降。 0 = 非表示ではない 1: 非表示 |
IsIdentity | 列で IDENTITY プロパティを使用します。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsIdNotForRepl | 列で IDENTITY_INSERT の設定が確認されます。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsIndexable | 列にインデックスを作成できます。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsOutParam | プロシージャ パラメーターは出力パラメーターです。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsPrecise | 列は正確です。 このプロパティは、決定的な列に対してのみ適用されます。 | 1:TRUE 0:FALSE NULL: 無効な入力 (決定的な列ではありません) |
IsRowGuidCol | 列は uniqueidentifier データ型であり、ROWGUIDCOL プロパティで定義されています。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsSparse | 列はスパース列です。 詳細については、「 スパース列の使用」を参照してください。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsSystemVerified | データベース エンジン では、列の決定性のプロパティと有効桁数のプロパティを確認できます。 このプロパティは、計算列およびビュー列にのみ適用されます。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
IsXmlIndexable | XML 列は XML インデックスで使用できます。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
[精度] | 列またはパラメーターのデータ型の長さ。 | 指定した列のデータ型の長さ -1: xml または大きい値の型 NULL: 無効な入力 |
スケール | 列またはパラメーターのデータ型のスケール。 | スケール値 NULL: 無効な入力 |
StatisticalSemantics | 列でセマンティック インデックス作成が有効になっています。 | 1:TRUE 0:FALSE |
SystemDataAccess | 列は SQL Server のシステム カタログまたは仮想システム テーブルのデータにアクセスする関数から派生します。 このプロパティは、計算列およびビュー列にのみ適用されます。 | 1: TRUE (読み取り専用アクセス) 0:FALSE NULL: 無効な入力 |
UserDataAccess | 列は SQL Server のローカル インスタンスに格納されている、ビュー テーブルおよび一時テーブルを含むユーザー テーブル内のデータにアクセスする関数から派生します。 このプロパティは、計算列およびビュー列にのみ適用されます。 | 1: TRUE (読み取り専用アクセス) 0:FALSE NULL: 無効な入力 |
UsesAnsiTrim | ANSI_PADDING はテーブルの作成時に ON に設定されました。 このプロパティは、char または varchar 型の列またはパラメーターにのみ適用されます。 | 1:TRUE 0:FALSE NULL: 無効な入力 |
戻り値の型
int
例外
エラーが発生した場合、または呼び出し元にオブジェクトの表示権限がない場合は、NULL が返されます。
ユーザーが所有しているか、または権限を与えられている、セキュリティ保護可能なリソースのメタデータのみを表示できます。 つまり、オブジェクトに対する適切な権限がユーザーに与えられていない場合、メタデータを生成する組み込み関数 (COLUMNPROPERTY
など) が NULL を返す可能性があります。 詳細については、「メタデータ表示の構成」を参照してください。
解説
列の決定的なプロパティを調べるときは、まず、その列が計算列であるかどうかをテストします。 計算列でない場合は、IsDeterministic 引数によって NULL が返されます。 計算列は、インデックス列として指定できます。
例
この例では、LastName
列の長さを返します。
USE AdventureWorks2022;
GO
SELECT COLUMNPROPERTY( OBJECT_ID('Person.Person'),'LastName','PRECISION')AS 'Column Length';
GO
結果セットは次のとおりです。
Column Length
-------------
50