ฉันพยายามหาชนิดข้อมูลทศนิยมของคอลัมน์ใน SQL Server ฉันต้องสามารถเก็บค่าเช่น 15.5, 26.9, 24.7, 9.8 ฯลฯ
ฉันกำหนดdecimal(18, 0)
ให้กับชนิดข้อมูลคอลัมน์ แต่สิ่งนี้ไม่อนุญาตให้ฉันเก็บค่าเหล่านี้
วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?
ฉันพยายามหาชนิดข้อมูลทศนิยมของคอลัมน์ใน SQL Server ฉันต้องสามารถเก็บค่าเช่น 15.5, 26.9, 24.7, 9.8 ฯลฯ
ฉันกำหนดdecimal(18, 0)
ให้กับชนิดข้อมูลคอลัมน์ แต่สิ่งนี้ไม่อนุญาตให้ฉันเก็บค่าเหล่านี้
วิธีที่ถูกต้องในการทำเช่นนี้คืออะไร?
คำตอบ:
DECIMAL(18,0)
จะอนุญาต 0 หลักหลังจุดทศนิยม
ใช้สิ่งที่ชอบDECIMAL(18,4)
แทนที่ควรทำดี!
ที่ให้คุณมีทั้งหมด 18 หลัก 4 ซึ่งหลังจากจุดทศนิยม (และ 14 ก่อนจุดทศนิยม)
decimal(4,2)
อนุญาตให้มี 2 หลักก่อนและ 2 หลักหลังจุดทศนิยม "4.5" สามารถเก็บไว้ได้โดยไม่มีปัญหา - และตัวเลข "4.5" และ "4.50" เหมือนกัน
varchar
เพื่อเก็บค่าทศนิยม !!
คุณควรใช้ดังนี้:
DECIMAL(m,a)
m
คือจำนวนหลักทั้งหมดที่ทศนิยมของคุณสามารถมีได้
a
คือจำนวนหลักสูงสุดที่คุณสามารถมีได้หลังจากจุดทศนิยม
http://www.tsqltutorials.com/datatypes.phpมีคำอธิบายสำหรับประเภทข้อมูลทั้งหมด
การตั้งค่าสำหรับDecimal
ความแม่นยำและมาตราส่วนของมันหรือในภาษาปกติมีกี่ตัวเลขที่สามารถมีได้และคุณต้องการให้มีจำนวนหลักทางด้านขวาของจุดทศนิยม
ดังนั้นถ้าคุณใส่PI
ลงไปDecimal(18,0)
มันจะถูกบันทึกเป็น3
?
หากคุณใส่PI
ลงไปDecimal(18,2)
ก็จะมีการบันทึกเป็น3.14
?
หากคุณใส่PI
ลงในบันทึกเป็นDecimal(18,10)
3.1415926535
ส่วนใหญ่ฉันใช้ทศนิยม (9,2) ซึ่งใช้พื้นที่เก็บข้อมูลน้อยที่สุด (5 ไบต์) ในรูปแบบทศนิยมของ sql
ความแม่นยำ => ไบต์การจัดเก็บข้อมูล
สามารถจัดเก็บได้ตั้งแต่ 0 ถึง 9 999 999.99 (หน้า 7 หลัก + 2 หลักหลังจุดทศนิยม = รวม 9 หลัก) ซึ่งใหญ่พอสำหรับค่าส่วนใหญ่
คุณสามารถลองสิ่งนี้
decimal(18,1)
ความยาวของตัวเลขควรมีทั้งหมด 18 ความยาวของตัวเลขหลังจุดทศนิยมควรเป็น 1 เท่านั้นและไม่มากกว่านั้น
ใน MySQL DB decimal(4,2)
อนุญาตให้ป้อนตัวเลขได้เพียง 4 หลักเท่านั้น ดังที่คุณเห็นdecimal(4,2)
นั่นหมายความว่าคุณสามารถป้อนตัวเลข 4 หลักซึ่งมีความหมายสองหลักสำหรับการรักษาหลังจากจุดทศนิยม
ดังนั้นหากคุณป้อน 100.0 ในฐานข้อมูล MySQL มันจะแสดงข้อผิดพลาดเช่น "นอกช่วงค่าสำหรับคอลัมน์"
ดังนั้นคุณสามารถเข้าสู่ช่วงนี้เท่านั้น: จาก 00.00 ถึง 99.99
คำตอบอื่น ๆ ที่ถูกต้อง DECIMAL(3, 1)
สมมติว่าตัวอย่างที่สะท้อนให้เห็นถึงคุณเต็มรูปแบบของความเป็นไปได้สิ่งที่คุณต้องการเป็น หรือDECIMAL(14, 1)
จะอนุญาตทั้งหมด 14 หลัก มันเป็นงานของคุณที่จะคิดเกี่ยวกับสิ่งที่เพียงพอ
request.input("name", sql.Decimal, 155.33) // decimal(18, 0)
request.input("name", sql.Decimal(10), 155.33) // decimal(10, 0)
request.input("name", sql.Decimal(10, 2), 155.33) // decimal(10, 2)