การแปลงชนิดข้อมูลด้วยคลอส CASE
หนึ่งในแอตทริบิวต์ของ parking_violation ที่บันทึกไว้ในแต่ละระเบียนคือตำแหน่งของยานพาหนะเทียบกับที่อยู่ของการละเมิด ค่า 'F' ในคอลัมน์ violation_in_front_of_or_opposite หมายความว่ายานพาหนะอยู่ด้านหน้าของที่อยู่ที่บันทึกไว้ ส่วนค่า 'O' หมายความว่ายานพาหนะอยู่ฝั่งตรงข้ามของถนน คอลัมน์นี้ใช้ชนิดข้อมูล TEXT ในการแทนค่า ซึ่งสามารถแทนข้อมูลเดียวกันนี้ด้วยค่า BOOLEAN (true/false) ได้ โดยใช้หน่วยความจำน้อยกว่า
ในแบบฝึกหัดนี้ จะแปลง violation_in_front_of_or_opposite ให้เป็นคอลัมน์ BOOLEAN ชื่อ is_violation_in_front โดยใช้คลอส CASE คอลัมน์นี้จะมีค่าเป็น true สำหรับระเบียนที่เกิดขึ้นด้านหน้าของที่อยู่ที่บันทึกไว้ และเป็น false สำหรับระเบียนที่เกิดขึ้นฝั่งตรงข้าม
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL
คำแนะนำการฝึกหัด
- เพิ่มเงื่อนไข case ที่กำหนดค่า
is_violation_in_frontเป็นtrueเมื่อค่าviolation_in_front_of_or_oppositeของระเบียนเท่ากับ'F' - เพิ่มเงื่อนไข case อีกหนึ่งข้อที่กำหนดค่า
is_violation_in_frontเป็นfalseเมื่อค่าviolation_in_front_of_or_oppositeของระเบียนเท่ากับ'O'
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
CASE WHEN
-- Use true when column value is 'F'
___ = ___ THEN ___
WHEN
-- Use false when column value is 'O'
___ = ___ THEN ___
ELSE
NULL
END AS ___
FROM
parking_violation;