การค้นหาและแก้ไขข้อมูลที่หายไป

SQL Server ระดับกลาง

Ginger Grant

Instructor

การตรวจจับค่าที่หายไป

  • เมื่อไม่มีข้อมูล ฟิลด์ในฐานข้อมูลจะแสดงค่า NULL

  • เนื่องจาก NULL ไม่ใช่ตัวเลข จึงไม่สามารถใช้ =, <, หรือ > เพื่อค้นหาหรือเปรียบเทียบค่าที่หายไปได้

  • หากต้องการตรวจสอบว่าคอลัมน์มีค่า NULL หรือไม่ ให้ใช้ IS NULL และ IS NOT NULL

SQL Server ระดับกลาง

การคืนค่าที่ไม่ใช่ NULL ใน T-SQL

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 ระดับกลาง

การตรวจจับค่า NULL ใน T-SQL

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
  • อาจพบได้ในคอลัมน์ที่เก็บข้อความ
  • สามารถใช้ string ว่าง '' เพื่อค้นหาค่าว่างได้
  • วิธีที่ดีที่สุดคือตรวจสอบคอลัมน์ที่มีค่า 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 ระดับกลาง

การแทนที่ค่า NULL โดยใช้ COALESCE

COALESCE คืนค่าแรกที่ไม่ใช่ NULL

COALESCE( value_1, value_2, value_3, ... value_n )
  • ถ้า value_1 เป็น NULL และ value_2 ไม่ใช่ NULL จะคืนค่า value_2
  • ถ้า value_1 และ value_2 เป็น NULL และ value_3 ไม่ใช่ NULL จะคืนค่า value_3
  • ...
SQL Server ระดับกลาง

คำสั่ง SQL โดยใช้ COALESCE

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...