How can I change NULL to 0 when getting a single value from a SQL function?

前端 未结 8 816
刺人心
刺人心 2021-02-06 20:02

I have a query that counts the price of all items between two dates. Here is the select statement:

SELECT SUM(Price) AS TotalPrice 
FROM Inventory
WHERE (DateAdd         


        
8条回答
  •  既然无缘
    2021-02-06 20:46

    Most database servers have a COALESCE function, which will return the first argument that is non-null, so the following should do what you want:

    SELECT COALESCE(SUM(Price),0) AS TotalPrice
    FROM Inventory
    WHERE (DateAdded BETWEEN @StartDate AND @EndDate)
    

    Since there seems to be a lot of discussion about

    COALESCE/ISNULL will still return NULL if no rows match, try this query you can copy-and-paste into SQL Server directly as-is:

    SELECT coalesce(SUM(column_id),0) AS TotalPrice 
    FROM sys.columns
    WHERE (object_id BETWEEN -1 AND -2)
    

    Note that the where clause excludes all the rows from sys.columns from consideration, but the 'sum' operator still results in a single row being returned that is null, which coalesce fixes to be a single row with a 0.

提交回复
热议问题