Yanıtlar:
bunu dene
SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN)
Str()
İşlev kullanın . Üç argüman alır (sayı, görüntülenecek toplam karakter sayısı ve görüntülenecek ondalık basamak sayısı)
Select Str(12345.6789, 12, 3)
görüntüler: '12345.679' (3 boşluk, 5 basamak 12345, ondalık nokta ve üç ondalık basamak (679). - kısalması gerekiyorsa yuvarlar (tam sayı kısmı toplam boyut için çok büyük değilse, bu durumda yerine yıldız işaretleri görüntülenir.)
Toplam 12 karakter, 3 ondalık ayırıcının sağında.
it rounds if it has to truncate
... tamsayı kısmı toplam boyut için çok büyük değilse, bu durumda yıldız işaretleri görüntülenir. Bu, dokümantasyondaSTR
belirtilmiştir . İşte bu sayfadan bir alıntı:STR(1223,2) truncates the result set to **.
Genellikle SQL'de bir sayının kesinliğini parametrelerle tanımlayarak tanımlayabilirsiniz. Çoğu durumda, bu bir sütunu 2 hassasiyetle (ondalık basamak) toplam 10 basamaklı bir Sayı olarak tanımlar NUMERIC(10,2)
veya Decimal(10,2)
- olarak tanımlayacaktır.
Anlaşılır olması için düzenlendi
Bu iş benim için ve her zaman iki basamak kesir tutar
23.1 ==> 23.10
25.569 ==> 25.56
1 ==> 1.00
Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2
Çocuklar bugün böyle yapıyor:
DECLARE @test DECIMAL(18,6) = 123.456789
SELECT FORMAT(@test, '##.##')
123,46
DECLARE @test DECIMAL(18,6) = 0.456789
o zaman SELECT FORMAT(@test, '##.##')
döner: .46
Bunu nasıl lider sıfır göstermek için alabilirim: 0.46
?
Bunu dene:
declare @MyFloatVal float;
set @MyFloatVal=(select convert(decimal(10, 2), 10.254000))
select @MyFloatVal
Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount
Eklemek istediğiniz değeri (ör. 2.99) 100 ile çarpın
Sonra sonuca 100 ekleyerek bölümü sonuna 0,01 ekleyin:
299.01/100
Bu, ondalık basamaktan sonra 2 değer içeren toplam 10 basamağa izin verir. Bu, ondalık basamağa kadar değer değerini 8 basamağa kadar ve ondalık basamağa 2 kadar kaldırabileceği anlamına gelir.
Doğrulamak için değeri aşağıdaki sorguya girin.
DECLARE vtest number(10,2);
BEGIN
SELECT 10.008 INTO vtest FROM dual;
dbms_output.put_line(vtest);
END;