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

計算列がSQLServerで決定論的であるかどうかを判断する方法

    SQL Serverで計算列を作成する場合、列に使用する式は決定論的または非決定論的のいずれかになります。これは、インデックスで使用できるかどうか、または「永続的」としてフラグを立てることができるかどうかなどの影響を与える可能性があります。

    決定論的列は、特定の入力値のセットに対して同じ値を返し、データベースの同じ状態が与えられる列です。非決定論的な列は、データベースの状態が同じままであっても、同じ入力が与えられた場合でも異なる値を返す可能性があります。たとえば、現在の日付を返す関数は、毎日異なる値を返すため、非決定的です。

    COLUMNPROPERTY()を使用できます IsDeterministicで機能する 計算列が決定論的であるかどうかを調べるための引数。

    実例を示します。

    SELECT 
      COLUMNPROPERTY(
        OBJECT_ID('dbo.Products'), 
        'TotalValue', 
        'IsDeterministic') 
        AS IsDeterministic;
    

    結果:

    +-------------------+
    | IsDeterministic   |
    |-------------------|
    | 1                 |
    +-------------------+
    

    この場合、TotalValue dbo.Productsの列 テーブルです 決定論的。そうでない場合、結果は0になります。 。

    IsDeterministic プロパティは、計算列とビュー列にのみ適用されます。


    1. Oracleで日付をフォーマットするときの曜日と月の名前の大文字化

    2. SQLiteFTS3テーブルの行IDを取得します

    3. SQLiteデータベースをCSVファイルにエクスポート

    4. SQLServerデータベースにすべてのストアドプロシージャを一覧表示する3つの方法