누락 데이터 탐지 및 해결

중급 SQL Server

Ginger Grant

Instructor

누락 값 탐지

  • 데이터가 없는 경우, 빈 데이터베이스 필드에는 NULL이 저장됩니다

  • NULL은 숫자가 아니므로 =, <, >로 누락 값을 찾거나 비교할 수 없습니다

  • 열에 NULL 값이 있는지 확인하려면 IS NULLIS NOT NULL을 사용합니다

중급 SQL Server

T-SQL에서 NULL 값 제외하여 조회하기

SELECT Country, InternetUse, Year
FROM EconomicIndicators
WHERE InternetUse IS NOT NULL 
+-------------------+-------------------+------------+
|Country            |InternetUse        |Year        |
|-------------------+-------------------+------------+
|Afghanistan        |4.58066992         |2011        |
|Albania            |49                 |2011        |
|Algeria            |14                 |2011        |
....
+-------------------+-------------------+------------+
중급 SQL Server

T-SQL에서 NULL 탐지하기

SELECT  Country, InternetUse, Year
FROM EconomicIndicators
WHERE InternetUse IS NULL 
+-------------------+-------------------+------------+
|Country            |InternetUse        |Year        |
|-------------------+-------------------+------------+
|Angola             |NULL               |2013        |
|Argentina          |NULL               |2013        |
|Armenia            |NULL               |2013        |
....
+-------------------+-------------------+------------+
중급 SQL Server

빈 문자열은 NULL이 아닙니다

  • 빈 문자열은 NULL 값과 다릅니다
  • 텍스트 열에서 나타날 수 있습니다
  • 빈 값을 찾으려면 빈 문자열 ''을 사용할 수 있습니다
  • 가장 좋은 방법은 Length 또는 LEN > 0인 열을 검색하는 것입니다
중급 SQL Server

빈 문자열은 NULL이 아닙니다

SELECT Country, GDP, Year
FROM EconomicIndicators
WHERE LEN(GDP) > 0
+-------------------+-------------------+------------+
|Country            |GDP                |Year        |
|-------------------+-------------------+------------+
|Afghanistan        |54852215624        |2011        |
|Albania            |29334492905        |2011        |
|Algeria            |453558093404       |2011        |
....
+-------------------+-------------------+------------+
중급 SQL Server

ISNULL로 누락 데이터를 특정 값으로 대체하기

SELECT GDP, Country, 
ISNULL(Country, 'Unknown') AS NewCountry
FROM EconomicIndicators
+-------------------+----------------+----------------+
|GDP                |Country         |NewCountry      |
|-------------------+----------------+----------------+
|5867920022         |NULL            |Unknown         |
|597873038497       |South Africa    |South Africa    |  
|1474091271101      |NULL            |Unknown         |
...
+-------------------+----------------+----------------+
중급 SQL Server

ISNULL로 누락 데이터를 다른 열 값으로 대체하기

/*Substituting values from one column for another with ISNULL*/
SELECT TradeGDPPercent, ImportGoodPercent,
ISNULL(TradeGDPPercent, ImportGoodPercent) AS NewPercent
FROM EconomicIndicators
+-------------------+------------------+----------------+
|TradeGDPPercent    |ImportGoodPercent |NewPercent      |
|-------------------+------------------+----------------+
|NULL               |56.7              |56.7            |
|52.18720739        |51.75273421       |52.18720739     |  
|NULL               |NULL              |NULL            |
...
+-------------------+------------------+----------------+
중급 SQL Server

COALESCE로 NULL 값 대체하기

COALESCE는 첫 번째 비누락 값을 반환합니다

COALESCE( value_1, value_2, value_3, ... value_n )
  • value_1NULL이고 value_2NULL이 아니면 value_2 반환
  • value_1value_2NULL이고 value_3NULL이 아니면 value_3 반환
  • ...
중급 SQL Server

COALESCE를 사용한 SQL 구문

SELECT TradeGDPPercent, ImportGoodPercent,
COALESCE(TradeGDPPercent, ImportGoodPercent, 'N/A') AS NewPercent
FROM EconomicIndicators
+-------------------+--------------------+---------------+
|TradeGDPPercent    |ImportGoodPercent   |NewPercent     |
|-------------------+--------------------+---------------+
|NULL               |56.7                |56.7           |
|NULL               |NULL                |N/A            |
|52.18720739        |51.75273421         |52.18720739    |
+-------------------+--------------------+---------------+
중급 SQL Server

연습해 봅시다!

중급 SQL Server

Preparing Video For Download...