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

COLUMNPROPERTY()を使用して、SQLServerの列またはパラメーター情報を返します

    SQL Serverでは、COLUMNPROPERTY() 関数は列またはパラメータ情報を返します。

    たとえば、これを使用して、テーブルの列に関する情報、ストアドプロシージャのパラメータなどを返すことができます

    テーブルまたはプロシージャのID、該当する列またはパラメータ、および情報が必要なプロパティの3つの引数を受け入れます。

    構文

    構文は次のようになります:

    COLUMNPROPERTY ( id , column , property )
    

    例1-テーブルのクエリ

    この例では、テーブル内の列に関する情報を取得します。

    USE Music;
    SELECT 
      COLUMNPROPERTY(OBJECT_ID('Artists'), 'ArtistId', 'AllowsNull') AS [Result];
    

    結果:

    +----------+
    | Result   |
    |----------|
    | 0        |
    +----------+
    

    この場合、ArtistId列はNULL値を許可しません。

    別の列に切り替えましょう:

    SELECT 
      COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
      COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Precision') AS [Precision],
      COLUMNPROPERTY(OBJECT_ID('Artists'), 'ActiveFrom', 'Scale') AS [Scale];
    

    結果:

    +--------------+-------------+---------+
    | ActiveFrom   | Precision   | Scale   |
    |--------------+-------------+---------|
    | 1            | 10          | 0       |
    +--------------+-------------+---------+
    

    この場合、ActiveFrom列はNULL値を許可します。また、精度は10、スケールは0です。

    OBJECT_ID()を使用していることに気付くでしょう テーブルのIDを返す関数。この関数がないと、IDを知る必要があります(またはIDを取得するためだけに別のクエリを実行する必要があります)。

    OBJECT_ID()は次のとおりです 上記の例で戻ります:

    SELECT OBJECT_ID('Artists') AS Result;
    

    結果:

    +-----------+
    | Result    |
    |-----------|
    | 885578193 |
    +-----------+
    

    IDがわかったので、それをCOLUMNPROPERTY()に渡すことができます。 代わりに機能する:

    SELECT 
      COLUMNPROPERTY(885578193, 'ActiveFrom', 'AllowsNull') AS [ActiveFrom],
      COLUMNPROPERTY(885578193, 'ActiveFrom', 'Precision') AS [Precision],
      COLUMNPROPERTY(885578193, 'ActiveFrom', 'Scale') AS [Scale];
    

    結果:

    +--------------+-------------+---------+
    | ActiveFrom   | Precision   | Scale   |
    |--------------+-------------+---------|
    | 1            | 10          | 0       |
    +--------------+-------------+---------+
    

    例2–プロシージャのクエリ

    この例では、ストアドプロシージャのパラメータに関する情報を取得します。

    USE Music;
    SELECT 
      COLUMNPROPERTY(
          OBJECT_ID('dbo.uspGetAlbumsByArtist'), 
          '@ArtistId', 
          'IsOutParam') AS [Result];
    

    結果:

    +----------+
    | Result   |
    |----------|
    | 0        |
    +----------+
    

    つまり、まったく同じ構文です。この場合、パラメータ@ArtistId は出力パラメータではありません。

    オプションの完全なリスト

    COLUMNPROPERTY()に渡すことができる引数の完全なリストは次のとおりです。 執筆時点:

    • AllowsNull
    • ColumnId
    • FullTextTypeColumn
    • GeneratedAlwaysType
    • IsColumnSet
    • IsComputed
    • IsCursorType
    • IsDeterministic
    • IsFulltextIndexed
    • 非表示
    • IsIdentity
    • IsIdNotForRepl
    • IsIndexable
    • IsOutParam
    • IsPrecise
    • IsRowGuidCol
    • IsSparse
    • IsSystemVerified
    • IsXmlIndexable
    • 精度
    • スケール
    • StatisticsSemantics
    • SystemDataAccess
    • UserDataAccess
    • UsesAnsiTrim

    各プロパティの詳細な説明については、Microsoftのドキュメントを参照してください。

    OBJECTPROPERTYEX()も参照してください データベースではなくスキーマスコープのオブジェクトに関する情報を返す同様の関数の場合、およびDATABASEPROPERTYEX() データベースのプロパティ情報を返します。


    1. 無料で広く使用されているトップ18のオープンソースNoSQLデータベース

    2. データレプリケーションの目的は何ですか?

    3. 既存のテーブルをプライマリファイルグループから別のファイルグループに移動する

    4. Oracle PL / SQL開発者で日付付きの時間部分を表示するための設定は何ですか?