>  기사  >  데이터 베이스  >  MySQL SUM 함수가 NULL을 반환하는 것을 방지하는 방법은 무엇입니까?

MySQL SUM 함수가 NULL을 반환하는 것을 방지하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-31 07:22:30227검색

How to Prevent MySQL SUM Function from Returning NULL?

MySQL SUM 함수에서 NULL 값을 처리하는 방법

MySQL에서 SUM 함수는 값이 없을 때 종종 NULL을 반환합니다. 불편하다. 이 문서에서는 COALESCE 함수를 사용하여 값이 없을 때 SUM이 항상 '0'을 반환하도록 하는 방법을 살펴봅니다.

문제:

다음과 같은 쿼리를 고려해보세요.

<code class="sql">SELECT SUM(Column_1)
FROM Table
WHERE Column_2 = 'Test'</code>

Column_2에 기준을 충족하는 항목이 없으면 함수는 NULL을 반환합니다. 하지만 대신 '0'을 반환하는 것이 더 나을 수도 있습니다.

해결 방법: COALESCE 사용

이 문제를 해결하려면 COALESCE 함수를 사용하세요. COALESCE는 여러 값을 인수로 사용하고 NULL이 아닌 첫 번째 값을 반환합니다. SUM 함수와 함께 사용하면 NULL이 발생할 때 결과가 항상 '0'이 되도록 보장할 수 있습니다.

<code class="sql">SELECT COALESCE(SUM(column),0)
FROM   table
WHERE  ...</code>

예:

COALESCE 함수를 보여주기 위한 SQL 바이올린: http://www.sqlfiddle.com/#!2/d1542/3/0

추가 정보:

COALESCE function은 NULL 값을 처리하기 위해 다른 함수와 함께 사용될 수도 있습니다. 다음은 값이 다른 세 개의 테이블을 사용하는 예입니다.

MySQL 5.5.32 스키마 설정:

<code class="sql">CREATE TABLE foo (
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO foo (val) VALUES
(null), (1), (null), (2), (null), (3), (null), (4), (null), (5), (null), (6), (null);

CREATE TABLE bar (
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO bar (val) VALUES
(1), (2), (3), (4), (5), (6);

CREATE TABLE baz (
  id    INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  val   INT
);

INSERT INTO baz (val) VALUES
(null), (null), (null), (null), (null), (null);</code>

쿼리:

<code class="sql">SELECT  'foo'                   as table_name,
        'mixed null/non-null'   as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    foo
UNION ALL

SELECT  'bar'                   as table_name,
        'all non-null'          as description,
        21                      as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    bar
UNION ALL

SELECT  'baz'                   as table_name,
        'all null'              as description,
        0                       as expected_sum,
        COALESCE(SUM(val), 0)   as actual_sum
FROM    baz</code>

결과:

TABLE_NAME DESCRIPTION EXPECTED_SUM ACTUAL_SUM
foo mixed null/non-null 21 21
bar all non-null 21 21
baz all null 0 0

위 내용은 MySQL SUM 함수가 NULL을 반환하는 것을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.