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 ได้อย่างมีประสิทธิภาพ นี่คือวิธีที่คุณสามารถทำได้:

การดำเนินการทีละขั้นตอน

  1. คูณค่าประเภท Money ด้วย 100: วิธีนี้จะเคลื่อนจุดทศนิยมไปทางขวาสองตำแหน่ง ตัวอย่างเช่น 1.23 จะกลายเป็น 123 และ 19.99 จะกลายเป็น 1999
  2. แปลงเป็น INT: การแปลงเป็น INT จะทำให้ทิ้งจุดทศนิยมใดๆ ทิ้งไว้เพียงแค่เลขจำนวนเต็มที่สะอาด

ตัวอย่างการดำเนินการ

นี่คือตัวอย่างที่จะแสดงให้เห็นถึงการแก้ปัญหาในทางปฏิบัติ:

SELECT CAST(1.23 * 100 AS INT) AS Amount1,
       CAST(19.99 * 100 AS INT) AS Amount2

โค้ดนี้จะส่งคืน:

  • Amount1: 123
  • Amount2: 1999

ทำไมวิธีนี้ถึงดีกว่า

  • ประสิทธิภาพ: การคูณและการแปลงโดยทั่วไปจะเร็วกว่า การจัดการสตริง โดยเฉพาะอย่างยิ่งกับชุดข้อมูลที่ใหญ่ขึ้น
  • ความเรียบง่าย: โค้ดอ่านง่ายและบำรุงรักษาได้ ง่ายสำหรับใครก็ตามที่ตรวจสอบหรือใช้สคริปต์ SQL
  • ความถูกต้องของข้อมูล: การอยู่ในประเภทตัวเลขและหลีกเลี่ยงการแปลงเป็นสตริง คุณจะลดความเสี่ยงจากการแนะนำข้อผิดพลาดหรือพฤติกรรมที่ไม่คาดคิดจากการจัดรูปแบบที่ไม่ถูกต้อง

บทสรุป

การใช้ T-SQL ใน SQL Server 2005 การลบจุดทศนิยมจากประเภทข้อมูล Money สามารถทำได้อย่างมีประสิทธิภาพโดยการคูณค่าด้วย 100 และแปลงเป็นตัวเลขจำนวนเต็ม วิธีนี้ง่ายขึ้น เร็วขึ้น และรับประกันความถูกต้องของข้อมูล ครั้งต่อไปที่คุณต้องจัดการกับค่าประเภท Money ในการสอบถามของคุณ ให้พิจารณาวิธีนี้เพื่อให้ได้ทางเลือกที่สะอาดและมีประสิทธิภาพมากขึ้น