U gebruikt de standaard niet zoals bedoeld. Het is iets dat SQL Server intern evalueert op het moment van invoegen (of mogelijk bijwerken als de default
zoekwoord wordt gebruikt).
Het is niet bedoeld voor gebruik in SELECT
. Bedenk dat het willekeurige uitdrukkingen kan bevatten, zoals DEFAULT CAST(GETDATE() AS INT) % 2
of een Scalaire UDF aanroepen. Casten van string naar bit zal die uitdrukkingen niet voor je evalueren.
De enige manier waarop u zoiets zou kunnen doen, is door het afzonderlijk te evalueren
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