sql سكل سيرفر تحقق من إيسنول و صفر




sql-server isnull (4)

يمكنك استخدام كيس

بدلا من

ISNULL(@VariableEqualToZero,1)

استعمال

CASE WHEN @VariableEqualToZero IS NULL OR @VariableEqualToZero = 0 THEN 1 ELSE @VariableEqualToZero END

كواليس و إيسنول هي أساسا مجرد اختصارات لبيان حالة. يمكنك استشارة مساعدة لبناء الجملة من كيس.

لدي ما يلي:

set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1 

إذا كانVariableEqualToZero هو نول فإنه يستبدل 1. أحتاج إلى استبدال 1 إذاVariableEqualToZero = 0 كذلك. كيف أقوم بهذا العمل؟


إذا كنت تستخدم سكل سيرفر، يمكنك ربما استخدام عبارة نوليف؟ (أي تعيين القيمة إلى صفر إذا كان 0 ثم تعيينه إلى 1 إذا كان نول - يجب التقاط لكلا 0 و نولس

SET @SomeVariable = @AnotherVariable/ISNULL(NULLIF(@VariableEqualToZero,0),1) - 1

SET @SomeVariable = @AnotherVariable / COALESCE(
        CASE 
             WHEN @VariableEqualToZero = 0 THEN 1
             ELSE @VariableEqualToZero
        END, 1) - 1

set @SomeVariable = @AnotherVariable /
(case when isnull(@VariableEqualToZero, 0) = 0 then 1 else
@VariableEqualToZero end) - 1




divide-by-zero