0
我試圖執行以下操作:SQL如果A則B否則C
Declare @Customers nvarchar(MAX) = '15000, 15011'
--Declare @Customers nvarchar(MAX) = NULL
--IF A THEN B ELSE C
--((Not A) or B) AND (A or C)
SELECT SD.CustomerNumber, SD.CustomerName,
CASE WHEN F.CustomerNumber IS NOT NULL THEN 1 ELSE 0 END HasDiscount
From [dbo].[SubscriberDetails] As SD
LEFT JOIN [dbo].[FamilyCustomer] F
On F.CustomerNumber = SD.CustomerNumber
WHERE
((NOT @Customers IS NULL) OR F.CustomerNumber IS NOT NULL) AND (@Customers IS NULL OR SD.CustomerNumber IN (SELECT * FROM dbo.iter$ListToTable(@Customers)))
我試圖做的是通過在逗號分隔值「15000,15011,16000的字符串。 。「或者將NULL填入@Customers參數。我使用的是從here在一個字符串 採取然後在我的存儲過程我想檢查的功能:如果@Customers傳遞至少一個值
If Customers is Null then:
F.CustomerNumber IS NOT NULL
Else (@Customsers is not null Therefor)
SELECT * FROM dbo.iter$ListToTable(@Customers)
一切工作正常,但我得到"Cannot insert the value NULL into column 'number', table '@tbl'; column does not allow nulls. INSERT fails." when passing in null
((不是A)或B)和(A或C)取自here
我在做什麼錯? 感謝
我使用的功能,在一個字符串採用(逗號分隔)。我DON「如果@Customers爲NULL,則要執行該函數 – ShaneKm