왼쪽 외부 조인에서 반환 된 기본 Null 값 바꾸기


98

왼쪽 외부 조인을 사용하여 세 개의 테이블에서 데이터를 반환하는 Microsoft SQL Server 2008 쿼리가 있습니다. 여러 번, 두 번째 및 세 번째 테이블에 데이터가 없으므로 왼쪽 외부 조인의 기본값이라고 생각하는 null을 얻습니다. select 문에서 기본값을 바꾸는 방법이 있습니까? 테이블 변수를 선택할 수 있다는 해결 방법이 있지만 약간 더러워진 것 같습니다.

SELECT iar.Description, iai.Quantity, iai.Quantity * rpl.RegularPrice as 'Retail', 
iar.Compliance FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

가능한 경우 Quantity 및 RegularPrice의 기본값을 0으로 설정하고 싶습니다.


참고 : 이 게시물의 일부 답변은 MSFT sql-server 이외의 데이터베이스를 다루기 때문에이 답변이 다른 컨텍스트의 검색 결과 페이지에도 표시됩니다.
dreftymac

답변:


138

그것은만큼 쉽습니다

IsNull(FieldName, 0)

또는 더 완벽하게 :

SELECT iar.Description, 
  ISNULL(iai.Quantity,0) as Quantity, 
  ISNULL(iai.Quantity * rpl.RegularPrice,0) as 'Retail', 
  iar.Compliance 
FROM InventoryAdjustmentReason iar
LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

4
나는 그것이 쉬워야한다는 것을 알고 있었지만 어떤 이유로 그것을하는 방법에 대해 막혔습니다. 감사.
Brett Bim

44
MySQL이라면 IsNull을 'IFNULL'로 바꿔야합니다. 감사.
Dhanushka

17
PostgreSQL에서는 "COALESCE"인 것 같습니다 . MySQL의 경우 매뉴얼 페이지는 "IFNULL" 입니다. 표준에 대해 잘 모르겠습니다.
David Tonhofer 2014

3
DB2에서 대답은 '스위치 데이터베이스'인 것 같습니다.
rtf

2
SQLite의 경우 IFNULL.
Chintan Shah

12

의 경우 MySQL또는 SQLite올바른 키워드는 IFNULL(아님 ISNULL)입니다.

 SELECT iar.Description, 
      IFNULL(iai.Quantity,0) as Quantity, 
      IFNULL(iai.Quantity * rpl.RegularPrice,0) as 'Retail', 
      iar.Compliance 
    FROM InventoryAdjustmentReason iar
    LEFT OUTER JOIN InventoryAdjustmentItem iai  on (iar.Id = iai.InventoryAdjustmentReasonId)
    LEFT OUTER JOIN Item i on (i.Id = iai.ItemId)
    LEFT OUTER JOIN ReportPriceLookup rpl on (rpl.SkuNumber = i.SkuNo)
WHERE iar.StoreUse = 'yes'

5

MySQL

COALESCE(field, 'default')

예를 들면 :

  SELECT
    t.id,
    COALESCE(d.field, 'default')
  FROM
     test t
  LEFT JOIN
     detail d ON t.id = d.item

또한 여러 열을 사용 NULL하여 COALESCE 함수 로 확인할 수 있습니다 . 예를 들면 :

mysql> SELECT COALESCE(NULL, 1, NULL);
        -> 1
mysql> SELECT COALESCE(0, 1, NULL);
        -> 0
mysql> SELECT COALESCE(NULL, NULL, NULL);
        -> NULL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.