เปรียบเทียบชื่อด้วย SOUNDEX()
สตริงที่มีข้อผิดพลาด เช่น 'Ilynois' แทนที่จะเป็น 'Illinois' อาจสร้างปัญหาในการวิเคราะห์ข้อมูลได้ ดังนั้นการตรวจจับข้อผิดพลาดเหล่านี้จึงเป็นสิ่งสำคัญ
ขณะวิเคราะห์ตาราง flight_statistics พบว่าบางรายการในคอลัมน์ statistician_name และ statistician_surname มีการสะกดที่แตกต่างกัน เช่น Miriam Smith กับ Myriam Smyth และอาจมีความแตกต่างในลักษณะนี้อีก จึงต้องการตรวจสอบชื่อทั้งหมด
วิธีที่จะใช้คือการเปรียบเทียบชื่อนักสถิติด้วย SOUNDEX() หากผลลัพธ์ของ SOUNDEX() เหมือนกันแต่ข้อความที่นำมาเปรียบเทียบต่างกัน ก็จะพบข้อมูลที่ต้องทำความสะอาด
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำความสะอาดข้อมูลในฐานข้อมูล SQL Server
คำแนะนำการฝึกหัด
- เลือกค่าที่ไม่ซ้ำกันของคอลัมน์
statistician_nameและstatistician_surnameจากS1 - Inner join ตาราง
flight_statisticsในชื่อแทนS2โดยจับคู่ชื่อและนามสกุลที่ออกเสียงคล้ายกันด้วยSOUNDEX() - กรองเอาค่าที่คอลัมน์
statistician_nameและstatistician_surnameในS1กับS2สะกดแตกต่างกันออกมา
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
-- First name and surname of the statisticians
DISTINCT S1.___, S1.___
-- Join flight_statistics with itself
FROM ___ S1 INNER JOIN ___ S2
-- The SOUNDEX result of the first name and surname have to be the same
ON ___(S1.___) = ___(S2.___)
AND ___(S1.___) = ___(S2.___)
-- The texts of the first name or the texts of the surname have to be different
WHERE S1.___ <> S2.___
OR S1.___ <> S2.___