복붙노트

[SQL] 필드가 null는 MySQL의에있는 경우 0을 반환

SQL

필드가 null는 MySQL의에있는 경우 0을 반환

MySQL은, 그들은 NULL 경우 제로로 "총"필드를 설정하는 방법은 무엇입니까?

여기에 내가 무엇을 가지고 :

SELECT uo.order_id, uo.order_total, uo.order_status,
            (SELECT SUM(uop.price * uop.qty) 
             FROM uc_order_products uop 
             WHERE uo.order_id = uop.order_id
            ) AS products_subtotal,
            (SELECT SUM(upr.amount) 
             FROM uc_payment_receipts upr 
             WHERE uo.order_id = upr.order_id
            ) AS payment_received,
            (SELECT SUM(uoli.amount) 
             FROM uc_order_line_items uoli 
             WHERE uo.order_id = uoli.order_id
            ) AS line_item_subtotal
            FROM uc_orders uo
            WHERE uo.order_status NOT IN ("future", "canceled")
            AND uo.uid = 4172;

널 (NULL) 필드는 0이되어야 제외하고 데이터가 잘 나온다.

어떻게 MySQL의에서 NULL 0을 반환 할 수 있습니다?

해결법

  1. ==============================

    1.사용 IFNULL :

    사용 IFNULL :

    IFNULL(expr1, 0)
    

    문서에서 :

  2. ==============================

    2.당신은 대신 COLUMN_NAME의 유착 (COLUMN_NAME, 0)를 사용할 수 있습니다. 병합 기능은 목록의 첫 번째 NULL이 아닌 값을 반환합니다.

    당신은 대신 COLUMN_NAME의 유착 (COLUMN_NAME, 0)를 사용할 수 있습니다. 병합 기능은 목록의 첫 번째 NULL이 아닌 값을 반환합니다.

    이 같은 당 행 기능은 일반적으로 확장 성 문제가 있음을 언급해야한다. 당신이 당신의 데이터베이스가 알맞은 크기로받을 수 있습니다 생각한다면, 그것은 삽입 / 업데이트에 선택에서 비용을 이동하는 여분의 열 및 트리거를 사용하는 것이 좋습니다.

    이 데이터베이스를 가정하는 비용이 더 자주 기록 된 (그리고 그들의 대부분은)보다 읽기 amortises.

  3. ==============================

    3.위의 답변 중 어느 것도 나를위한 완벽한 없었다. 당신의 필드가 필드 이름하다면 선택기는 다음과 하나 여야 있도록 :

    위의 답변 중 어느 것도 나를위한 완벽한 없었다. 당신의 필드가 필드 이름하다면 선택기는 다음과 하나 여야 있도록 :

    IFNULL(`field`,0) AS field
    

    SELECT 쿼리의 예를 들면 :

    SELECT IFNULL(`field`,0) AS field, `otherfield` FROM `mytable`
    

    시간을 낭비하지이 캔 도움말 사람을 바랍니다.

  4. ==============================

    4.당신이 뭔가를 시도 할 수 있습니다

    당신이 뭔가를 시도 할 수 있습니다

    IFNULL(NULLIF(X, '' ), 0)
    

    속성 X는 너무 후 대신 마지막 값을 0으로 선언 할 수 있음을 빈 문자열 인 경우 비어있는 것으로 가정한다. 또 다른 경우, 원래 값으로 남아있을 것입니다.

    어쨌든, 그냥 할 수있는 또 다른 방법을 제공합니다.

  5. ==============================

    5.예 IFNULL 함수는 원하는 결과를 얻기 위해 노력한다.

    예 IFNULL 함수는 원하는 결과를 얻기 위해 노력한다.

    SELECT uo.order_id, uo.order_total, uo.order_status,
            (SELECT IFNULL(SUM(uop.price * uop.qty),0) 
             FROM uc_order_products uop 
             WHERE uo.order_id = uop.order_id
            ) AS products_subtotal,
            (SELECT IFNULL(SUM(upr.amount),0) 
             FROM uc_payment_receipts upr 
             WHERE uo.order_id = upr.order_id
            ) AS payment_received,
            (SELECT IFNULL(SUM(uoli.amount),0) 
             FROM uc_order_line_items uoli 
             WHERE uo.order_id = uoli.order_id
            ) AS line_item_subtotal
            FROM uc_orders uo
            WHERE uo.order_status NOT IN ("future", "canceled")
            AND uo.uid = 4172;
    
  6. from https://stackoverflow.com/questions/3997327/return-0-if-field-is-null-in-mysql by cc-by-sa and MIT license