SQL Serverでは、sys.columns
を使用できます テーブルから計算されていない列のリストを返すシステムカタログビュー。
「非計算」とは、単に計算列ではない列を意味します。
例
実例を示します。
SELECT name AS [Column], TYPE_NAME(user_type_id) AS [Data Type], max_length, is_computed FROM sys.columns WHERE OBJECT_NAME(object_id) = 'Products' AND is_computed = 0;
結果:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | +-------------+-------------+--------------+---------------+
sys.columns
ビューは多くの列を返すので、ここではそれらをほんの一握りに絞り込みました。
この場合、テーブル名はProducts
です。 。それでフィルタリングしなかった場合、すべてのテーブル(システムテーブルを含む)、ビュー、テーブル値関数などから非常に多くの列のリストを取得します。
is_computed
を含めました これらの列に0
があることがわかるように、ここに列を配置します。 その列にあります。
このテーブルには、TotalValue
という計算列があることを偶然知っています。 。もう一度クエリを実行しますが、今回はすべての列(計算列を含む)を返します。
SELECT name AS [Column], TYPE_NAME(user_type_id) AS [Data Type], max_length, is_computed FROM sys.columns WHERE OBJECT_NAME(object_id) = 'Products';
結果:
+-------------+-------------+--------------+---------------+ | Column | Data Type | max_length | is_computed | |-------------+-------------+--------------+---------------| | ProductID | int | 4 | 0 | | ProductName | varchar | 255 | 0 | | Quantity | smallint | 2 | 0 | | Price | money | 8 | 0 | | TotalValue | money | 8 | 1 | +-------------+-------------+--------------+---------------+