Programing

SQL 함수에서 단일 값을 가져올 때 어떻게 NULL을 0으로 변경할 수 있습니까?

lottogame 2020. 12. 29. 06:43
반응형

SQL 함수에서 단일 값을 가져올 때 어떻게 NULL을 0으로 변경할 수 있습니까?


두 날짜 사이의 모든 항목의 가격을 계산하는 쿼리가 있습니다. 다음은 select 문입니다.

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

모든 테이블이 올바르게 설정되었다고 가정 할 수 있습니다.

두 날짜 중에서 선택하고 해당 날짜 범위 내에 항목이 없으면 함수는 0이 아닌 TotalPrice로 NULL을 반환합니다.

레코드를 찾을 수없는 경우 NULL이 아닌 0이 반환되는지 어떻게 확인할 수 있습니까?


대부분의 데이터베이스 서버에는 널이 아닌 첫 번째 인수를 리턴 하는 COALESCE 함수가 있으므로 다음이 원하는 작업을 수행해야합니다.

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

[편집하다]

"일치하는 행이없는 경우 COALESCE / ISNULL은 여전히 ​​NULL을 반환합니다"에 대한 많은 논의가있는 것처럼 보이기 때문에 명확하게하기 위해이 쿼리를 그대로 SQL Server에 직접 복사하여 붙여 넣을 수 있습니다.

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

where 절은 sys.columns의 모든 행을 고려 대상에서 제외하지만 'sum'연산자는 여전히 null 인 단일 행을 반환하여 수정 사항을 0이있는 단일 행으로 통합합니다.

이것이 설명하는 데 도움이되기를 바랍니다.


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

그게 트릭을해야합니다.


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

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

테이블의 응답에 행이 있으면 SUM (Price)을 반환합니다. SUM이 NULL이거나 행이 없으면 0을 반환합니다.

COALESCE (SUM (Price), 0)은 행이없는 경우 MSSQL에서 작동하지 않습니다.


편집 : 다른 사람들이 나를 이겼 던 것 같습니다 haha

답을 찾았습니다.

ISNULL() 널값이있을 때 수행 할 작업을 결정합니다.

이 경우 내 함수는 null 값을 반환하므로 대신 반환 할 0을 지정해야했습니다.

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

당신은 사용할 수 있습니다

SELECT ISNULL(SUM(ISNULL(Price, 0)), 0).

나는 그것이 효과가있을 것이라고 99 % 확신한다.


ORACLE / PLSQL :

NVL 기능

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

이 SQL 문은 null 값을 반환 0하면 반환 됩니다 SUM(Price). 그렇지 않으면 SUM(Price)값을 반환합니다 .


이를 수행하는 가장 쉬운 방법은 결과에 0을 추가하는 것입니다.

$A=($row['SUM'Price']+0);
echo $A;

도움이 되었기를 바랍니다!!

참조 URL : https://stackoverflow.com/questions/1005036/how-can-i-change-null-to-0-when-getting-a-single-value-from-a-sql-function

반응형