Microsoftによると
ISNULL(check_expression, replacement_value)
replacement_value
check_expression
のタイプに暗黙的に変換可能なタイプである必要があります 。 'xy'+NULL
のタイプに注意してください VARCHAR(3)
です 。このため、文字列'ABCDEFGHIJ'
VARCHAR(3)
にキャストされます したがって、トリミングされます。
VARCHAR(2)
ではない理由は奇妙に聞こえます 、しかしこれはその通りです-'xy'
より1文字長い 。この'xy'+NULL
のタイプを自分で確認してください 式CASE WHEN 1=2 THEN 'XYZ' ELSE NULL END
の場合と同じです。 、これはNULL
ただし、VARCHAR(3)
と暗黙的に互換性があります 。
式'xy'+NULL
のようです 知覚される長さは、'xy'
として計算できます。 文字列の長さ(2)プラスNULL
ごとに1 追加した。たとえば、'xy'+NULL+NULL
のタイプ VARCHAR(4)
です 、'xy'+NULL+NULL+NULL
と入力します VARCHAR(5)
です など-この