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

ストアド プロシージャで列の既定値を使用する

    デフォルトを意図したとおりに使用していません。これは、挿入時に SQL Server が内部的に評価するものです (または default の場合は更新される可能性があります)。 キーワードが使用されます)。

    SELECT での使用は想定されていません . DEFAULT CAST(GETDATE() AS INT) % 2 などの任意の式を含めることができることを考慮してください またはスカラー UDF を呼び出します。文字列からビットへのキャストでは、これらの式は評価されません。

    このようなことを行う唯一の方法は、個別に評価することです

    DECLARE @B            BIT
            , @Definition NVARCHAR(max)
    
    SELECT @Definition = N'SELECT @B = '
                         + object_definition(default_object_id)
    FROM   sys.columns
    WHERE  NAME = 'value'
           AND object_id = OBJECT_ID('dbo.t2')
    
    EXEC sys.sp_executesql
      @Definition,
      N'@B BIT OUTPUT',
      @B = @B OUTPUT
    
    SELECT t1.*,
           ISNULL(t2.value, @B)
    FROM   t1
           LEFT JOIN t2
                  ON t1.id = t2.id 
    


    1. 条件を使用してネストされたクエリを休止状態にする

    2. MySQLの問題LOADXMLINFILE

    3. SQLデータ型の概要

    4. 結果を除算するためのSQLの10進値