it-source

MySQL에서 필드가 null인 경우 0을 반환합니다.

criticalcode 2022. 11. 19. 11:31
반응형

MySQL에서 필드가 null인 경우 0을 반환합니다.

MySQL에서 NULL인 경우 "total" 필드를 0으로 설정하는 방법이 있습니까?

제가 가지고 있는 것은 다음과 같습니다.

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을 반환하려면 어떻게 해야 합니까?

IFNULL 사용:

IFNULL(expr1, 0)

매뉴얼에서 다음 항목을 참조하십시오.

expr1이 NULL이 아닌 경우 IFNULL()은 expr1을 반환하고 그렇지 않은 경우 expr2를 반환합니다.IFNULL()은 숫자 또는 문자열 값을 사용하는 컨텍스트에 따라 반환합니다.

사용할 수 있습니다.coalesce(column_name,0)뿐만 아니라column_name함수는 목록의 첫 번째 NULL 이외의 값을 반환합니다.

이와 같은 행 단위 함수는 일반적으로 확장성에 문제가 있습니다.데이터베이스의 사이즈가 적당하다고 생각되는 경우는, 대부분의 경우, 여분의 열과 트리거를 사용해 코스트를 삭감하는 것이 좋습니다.select에게insert/update.

이것은 데이터베이스를 쓰는 빈도보다 읽는 빈도(대부분 읽는다)가 높다고 가정하여 비용을 상각합니다.

위의 답변 중 어느 것도 나에게 완벽하지 않았다.필드가 지정된 경우field그래서 셀렉터는 다음 셀렉터여야 합니다.

IFNULL(`field`,0) AS field

예를 들어 SELECT 쿼리의 경우:

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

이것이 누군가가 시간을 낭비하지 않도록 도울 수 있기를 바랍니다.

이런 걸 시도해 보세요.

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

Atribut X가 빈 String일 경우 빈 것으로 간주되므로 그 이후에는 마지막 값이 아닌 0으로 선언할 수 있습니다.다른 경우에는 원래 가치를 유지할 것이다.

어쨌든, 다른 방법을 알려드리자면요.

예 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;

언급URL : https://stackoverflow.com/questions/3997327/return-0-if-field-is-null-in-mysql

반응형