ข้อมูลที่ไม่สะอาดที่พบบ่อยที่สุดประการหนึ่งที่คุณอาจพบคือข้อมูลที่มีเลขศูนย์นำหน้าในข้อมูลตัวเลขหรือสตริง ซึ่งอาจเกิดขึ้นเมื่อนำเข้าข้อมูลจากแหล่งภายนอกหรือใช้เทคนิคการรวบรวมข้อมูลอัตโนมัติ
ศูนย์นำหน้าในข้อมูลอาจเป็นปัญหาได้ โดยเฉพาะอย่างยิ่งเมื่อต้องจัดการกับค่าตัวเลขที่จัดเก็บเป็นสตริง
ในคู่มือนี้ เราจะพูดถึงวิธีการและเทคนิคทั้งหมดที่เราสามารถใช้เพื่อลบเลขศูนย์นำหน้าภายในชุดข้อมูล SQL
การตั้งค่าข้อมูลตัวอย่าง
ก่อนที่เราจะเจาะลึกแอปพลิเคชันและตัวอย่าง ให้เราเริ่มต้นด้วยการตั้งค่าชุดข้อมูลพื้นฐานที่จะช่วยสาธิตการเกิดเลขศูนย์นำหน้า
พิจารณาตารางของพนักงานที่มีข้อมูลดังต่อไปนี้:
สร้างตาราง พนักงาน (
รหัสพนักงาน VARCHAR(10)
-
แทรกลงในค่าพนักงาน (EmployeeID)
('00123'),
('00456'),
('00789')
('01012')
('01567');
ในกรณีนี้ รหัสพนักงานจะเป็นประเภท 'varchar' อย่างไรก็ตาม ค่าดังกล่าวมีเลขศูนย์นำหน้า
ให้เราสำรวจวิธีการที่เราสามารถใช้เพื่อลบเลขศูนย์นำหน้าเหล่านี้
การใช้ฟังก์ชัน CAST
วิธีหนึ่งในการลบเลขศูนย์นำหน้าคือการแปลงสตริงให้เป็นประเภทตัวเลข เราสามารถใช้ฟังก์ชันเช่น CAST หรือ CONVERT() ดังแสดงในตัวอย่างต่อไปนี้:
เลือกนักแสดง (EmployeeID AS INT) เป็น EmployeeIDWithoutZerosจากพนักงาน;
สิ่งนี้ควรทำงานโดยอัตโนมัติในฐานข้อมูลที่รองรับฟังก์ชัน cast()
อย่างไรก็ตาม ในฐานข้อมูล เช่น MySQL คุณอาจต้องย้ายฟังก์ชันไปยังฟังก์ชัน Trim เพื่อลบเลขศูนย์นำหน้าออก จากนั้น คุณสามารถแปลงค่าเป็นประเภทตัวเลขได้ดังแสดงในตัวอย่างต่อไปนี้:
เลือกนักแสดง (TRIM (นำ '0' จากรหัสพนักงาน) ตามที่ลงนาม) เป็นรหัสพนักงานโดยไม่มีศูนย์จากพนักงาน;
ผลลัพธ์ที่ได้จะเป็นดังนี้:
การใช้ฟังก์ชัน LTIM
วิธีการทั่วไปและมีประสิทธิภาพที่สุดที่คุณสามารถใช้เพื่อลบศูนย์นำหน้าใดๆ ได้คือการใช้ฟังก์ชัน LTRIM() ฟังก์ชันนี้ช่วยให้เราสามารถลบอักขระช่องว่างนำหน้าในสตริงที่กำหนดได้
อย่างไรก็ตาม ไม่อนุญาตให้เราระบุอักขระเฉพาะที่เราต้องการลบ ในกรณีของเรา เราสามารถใช้มันได้โดยการลบเลขศูนย์นำหน้าออกจากสตริง
ตัวอย่างมีดังนี้:
เลือก LTRIM (EmployeeID, '0') เป็น EmployeeIDWithoutZerosจากพนักงาน;
สิ่งนี้ควรลบอักขระศูนย์นำหน้าออกจากสตริง
บทสรุป
ในบทช่วยสอนนี้ เราได้สำรวจสองวิธีหลักที่เราสามารถใช้เพื่อลบอักขระศูนย์นำหน้าออกจากสตริง/คอลัมน์ที่กำหนด