sql >> データベース >  >> RDS >> Sqlserver

SQLServerのテーブルから計算されていないすべての列を返す

    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             |
    +-------------+-------------+--------------+---------------+
    

    1. 複数の述語のカーディナリティ推定

    2. CONVERT()を使用してSQLServerで日付/時刻値を文字列に変換する方法

    3. Oracle:'=ANY()' vs.'IN()'

    4. T-SQL動的ピボット