سؤال

لدي ما يلي:

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

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

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

إذا كنت تستخدم SQL Server، فربما يمكنك استخدام عبارة Nullif؟ (أي تعيين القيمة إلى NULL إذا كان 0 ثم تعيينه إلى 1 إذا كان ذلك فارغا - يجب أن يمسك لكل من 0 و Nulls

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

تستخدم حالة

بدلا من

ISNULL(@VariableEqualToZero,1)

استعمال

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

Coalesce و ISNULL هي أساسا فقط اختصارات لبيان القضية. يمكنك استشارة المساعدة في بناء جملة القضية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top