デフォルトを意図したとおりに使用していません。これは、挿入時に 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