T-SQL: การลบจุดทศนิยมจากประเภทข้อมูล Money
เมื่อทำงานกับข้อมูลทางการเงินใน SQL Server โดยเฉพาะอย่างยิ่งเมื่อใช้ภาษา T-SQL คุณอาจพบว่าต้องการจัดการตัวเลขในลักษณะที่ลบจุดทศนิยมออกไป สำหรับผู้ที่ใช้ประเภทข้อมูล Money ใน SQL Server 2005 คุณอาจสงสัยว่ามีวิธีที่ดีกว่าการแปลงตัวเลขเป็นสตริงและจากนั้นลบจุดทศนิยมผ่านการจัดการสตริงหรือไม่ มาสำรวจวิธีที่มีประสิทธิภาพเพื่อทำสิ่งนี้กันดีกว่า
วิธีทั่วไป
นักพัฒนา SQL หลายคนจัดการการลบจุดทศนิยมจากประเภท Money โดยการแปลงตัวเลขเป็น varchar ก่อนและใช้ฟังก์ชัน REPLACE
ตัวอย่างเช่น:
SELECT REPLACE(1.23, '.', ''), REPLACE(19.99, '.', '')
โค้ดนี้จะทำการแทนที่จุดทศนิยม ส่งผลให้ได้จำนวนเต็มที่ต้องการคือ 123 และ 1999 อย่างไรก็ตาม วิธีนี้อาจรู้สึกไม่สะดวกและไม่เหมาะสมในแง่ของประสิทธิภาพหรือความอ่านง่าย
วิธีการที่มีประสิทธิภาพมากขึ้น
วิธีที่สง่างามกว่าสามารถช่วยให้คุณบรรลุผลลัพธ์เดียวกันโดยไม่ต้องมีการแปลงที่ไม่จำเป็น แทนที่จะทำการแปลงเป็นสตริง คุณสามารถคูณค่าประเภท Money ด้วย 100 และจากนั้นแปลงเป็น INT วิธีนี้ตรงไปตรงมาและใช้ฟีเจอร์ของ T-SQL ได้อย่างมีประสิทธิภาพ นี่คือวิธีที่คุณสามารถทำได้:
การดำเนินการทีละขั้นตอน
- คูณค่าประเภท Money ด้วย 100: วิธีนี้จะเคลื่อนจุดทศนิยมไปทางขวาสองตำแหน่ง ตัวอย่างเช่น
1.23
จะกลายเป็น123
และ19.99
จะกลายเป็น1999
- แปลงเป็น INT: การแปลงเป็น INT จะทำให้ทิ้งจุดทศนิยมใดๆ ทิ้งไว้เพียงแค่เลขจำนวนเต็มที่สะอาด
ตัวอย่างการดำเนินการ
นี่คือตัวอย่างที่จะแสดงให้เห็นถึงการแก้ปัญหาในทางปฏิบัติ:
SELECT CAST(1.23 * 100 AS INT) AS Amount1,
CAST(19.99 * 100 AS INT) AS Amount2
โค้ดนี้จะส่งคืน:
Amount1
: 123Amount2
: 1999
ทำไมวิธีนี้ถึงดีกว่า
- ประสิทธิภาพ: การคูณและการแปลงโดยทั่วไปจะเร็วกว่า การจัดการสตริง โดยเฉพาะอย่างยิ่งกับชุดข้อมูลที่ใหญ่ขึ้น
- ความเรียบง่าย: โค้ดอ่านง่ายและบำรุงรักษาได้ ง่ายสำหรับใครก็ตามที่ตรวจสอบหรือใช้สคริปต์ SQL
- ความถูกต้องของข้อมูล: การอยู่ในประเภทตัวเลขและหลีกเลี่ยงการแปลงเป็นสตริง คุณจะลดความเสี่ยงจากการแนะนำข้อผิดพลาดหรือพฤติกรรมที่ไม่คาดคิดจากการจัดรูปแบบที่ไม่ถูกต้อง
บทสรุป
การใช้ T-SQL ใน SQL Server 2005 การลบจุดทศนิยมจากประเภทข้อมูล Money สามารถทำได้อย่างมีประสิทธิภาพโดยการคูณค่าด้วย 100 และแปลงเป็นตัวเลขจำนวนเต็ม วิธีนี้ง่ายขึ้น เร็วขึ้น และรับประกันความถูกต้องของข้อมูล ครั้งต่อไปที่คุณต้องจัดการกับค่าประเภท Money ในการสอบถามของคุณ ให้พิจารณาวิธีนี้เพื่อให้ได้ทางเลือกที่สะอาดและมีประสิทธิภาพมากขึ้น