คุณจะเขียนตัวเลขที่มีทศนิยมสองตำแหน่งสำหรับเซิร์ฟเวอร์ sql ได้อย่างไร
คุณจะเขียนตัวเลขที่มีทศนิยมสองตำแหน่งสำหรับเซิร์ฟเวอร์ sql ได้อย่างไร
คำตอบ:
ลองนี้
SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
ใช้Str()
ฟังก์ชั่น มันใช้เวลาสามข้อโต้แย้ง (ตัวเลขจำนวนตัวอักษรรวมที่จะแสดงและจำนวนตำแหน่งทศนิยมที่จะแสดง
Select Str(12345.6789, 12, 3)
แสดง: '12345.679' (3 ช่องว่าง, 5 หลัก 12345, ทศนิยมและสามหลักทศนิยม (679) - มันจะปัดเศษหากมันต้องตัดทอน (ยกเว้นส่วนจำนวนเต็มใหญ่เกินไปสำหรับขนาดทั้งหมดซึ่งในกรณีนี้ เครื่องหมายดอกจันจะแสดงแทน)
สำหรับทั้งหมด 12 ตัวอักษรโดยมี 3 ทางด้านขวาของจุดทศนิยม
it rounds if it has to truncate
... เว้นแต่ว่าส่วนจำนวนเต็มมีขนาดใหญ่เกินไปสำหรับขนาดทั้งหมดซึ่งจะแสดงเครื่องหมายดอกจันแทน นี้ถูกกล่าวถึงในเอกสาร STR
นี่คือคำพูดจากหน้านั้น:STR(1223,2) truncates the result set to **.
โดยทั่วไปคุณสามารถกำหนดความแม่นยำของตัวเลขใน SQL โดยการกำหนดด้วยพารามิเตอร์ สำหรับกรณีส่วนใหญ่จะเป็นNUMERIC(10,2)
หรือDecimal(10,2)
- จะกำหนดคอลัมน์เป็นตัวเลขที่มีตัวเลข 10 หลักโดยมีความแม่นยำ 2 (ตำแหน่งทศนิยม)
แก้ไขเพื่อความชัดเจน
สิ่งนี้ใช้ได้กับฉันและเก็บเศษส่วนสองหลักเสมอ
23.1 ==> 23.10
25.569 ==> 25.56
1 ==> 1.00
Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2
นี่เป็นวิธีที่เด็ก ๆ ทำกันในวันนี้:
DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')
123.46
DECLARE @test DECIMAL(18,6) = 0.456789
ดังนั้นSELECT FORMAT(@test, '##.##')
จะส่งคืน: .46
คุณจะให้ข้อมูลนั้นแสดงค่าศูนย์นำหน้าได้0.46
อย่างไร:
หากคุณต้องการเพียงทศนิยมสองตำแหน่งวิธีที่ง่ายที่สุดคือ ..
SELECT CAST(12 AS DECIMAL(16,2))
หรือ
SELECT CAST('12' AS DECIMAL(16,2))
เอาท์พุต
12.00
หากคุณสบายดีด้วยการปัดเศษจำนวนแทนที่จะปัดเศษมันก็แค่:
ROUND(column_name,decimals)
ลองสิ่งนี้:
declare @MyFloatVal float;
set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))
select @MyFloatVal
Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount
คูณค่าที่คุณต้องการแทรก (เช่น 2.99) คูณ 100
จากนั้นแทรกการหารด้วย 100 ของการเพิ่มผลลัพธ์. 01 ที่ส่วนท้าย:
299.01/100
ซึ่งจะอนุญาตให้มีทั้งหมด 10 หลักพร้อม 2 ค่าหลังจุดทศนิยม มันหมายความว่ามันสามารถรองรับค่าค่าก่อนทศนิยมถึง 8 หลักและ 2 หลังทศนิยม
ในการตรวจสอบให้ใส่ค่าในแบบสอบถามต่อไปนี้
DECLARE vtest number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;