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