[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.사용 IFNULL :
사용 IFNULL :
IFNULL(expr1, 0)
문서에서 :
-
==============================
2.당신은 대신 COLUMN_NAME의 유착 (COLUMN_NAME, 0)를 사용할 수 있습니다. 병합 기능은 목록의 첫 번째 NULL이 아닌 값을 반환합니다.
당신은 대신 COLUMN_NAME의 유착 (COLUMN_NAME, 0)를 사용할 수 있습니다. 병합 기능은 목록의 첫 번째 NULL이 아닌 값을 반환합니다.
이 같은 당 행 기능은 일반적으로 확장 성 문제가 있음을 언급해야한다. 당신이 당신의 데이터베이스가 알맞은 크기로받을 수 있습니다 생각한다면, 그것은 삽입 / 업데이트에 선택에서 비용을 이동하는 여분의 열 및 트리거를 사용하는 것이 좋습니다.
이 데이터베이스를 가정하는 비용이 더 자주 기록 된 (그리고 그들의 대부분은)보다 읽기 amortises.
-
==============================
3.위의 답변 중 어느 것도 나를위한 완벽한 없었다. 당신의 필드가 필드 이름하다면 선택기는 다음과 하나 여야 있도록 :
위의 답변 중 어느 것도 나를위한 완벽한 없었다. 당신의 필드가 필드 이름하다면 선택기는 다음과 하나 여야 있도록 :
IFNULL(`field`,0) AS field
SELECT 쿼리의 예를 들면 :
SELECT IFNULL(`field`,0) AS field, `otherfield` FROM `mytable`
시간을 낭비하지이 캔 도움말 사람을 바랍니다.
-
==============================
4.당신이 뭔가를 시도 할 수 있습니다
당신이 뭔가를 시도 할 수 있습니다
IFNULL(NULLIF(X, '' ), 0)
속성 X는 너무 후 대신 마지막 값을 0으로 선언 할 수 있음을 빈 문자열 인 경우 비어있는 것으로 가정한다. 또 다른 경우, 원래 값으로 남아있을 것입니다.
어쨌든, 그냥 할 수있는 또 다른 방법을 제공합니다.
-
==============================
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;
from https://stackoverflow.com/questions/3997327/return-0-if-field-is-null-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 선두에 제로 패딩으로 숫자 서식 (0) | 2020.04.01 |
---|---|
[SQL] SQL 쿼리는 SQL 서버에서 날짜를 삽입 (0) | 2020.04.01 |
[SQL] SELECT / GROUP BY - 시간 세그먼트 (10 초 30 초 등) (0) | 2020.04.01 |
[SQL] 데이터베이스에, 각각의 테이블 및 필드의 목록을 얻기 (0) | 2020.04.01 |
[SQL] SQL Server의 주 번호에서 일주일의 시작 날짜와 주 종료 날짜를 가져옵니다 (0) | 2020.03.31 |