2009-01-14 6 views

Répondre

31

Généralement, vous pouvez définir la précision d'un nombre dans SQL en le définissant avec des paramètres. Pour la plupart des cas, ce sera NUMERIC(10,2) ou Decimal(10,2) - définira une colonne comme un nombre avec 10 chiffres au total avec une précision de 2 (décimales).

Modifié par souci de clarté

+4

Il peut également être déclarée comme DECIMAL (10, 2). – jrcs3

+0

@ jrcs3 - Bonne prise. – AAA

+9

Ceci est faux pour plusieurs raisons. Ce n'est pas un nombre, c'est numérique ou décimal. Vous dites numérique (10,2) permet 10 places avant le point décimal, ce qui est également faux. numeric (10,2) permet 10 chiffres totaux avec 2 places après la virgule décimale. Plage = -99999999.99 à 99999999.99 –

54

Utilisez la fonction Str(). Il prend trois arguments (le nombre, le nombre total de caractères à afficher, et le nombre de décimales pour afficher

Select Str(12345.6789, 12, 3) 

affiche: « 12345.679 » (3 places, 5 chiffres 12345, un point décimal, et trois décimales digits (679) - il arrondit s'il doit être tronqué (sauf si la partie entière est trop grande pour la taille totale, auquel cas les astérisques sont affichés à la place.)

pour un total de 12 caractères le droit de la virgule décimale

+1

'il arrondit s'il doit tronquer' ... sauf si la partie entière est trop grande pour le total taille, auquel cas les astérisques sont affichés à la place. Cela est mentionné dans la [documentation pour 'STR'] (http://msdn.microsoft.com/en-us/library/ms189527.aspx). Voici une citation de cette page: 'STR (1223,2) tronque le jeu de résultats à **.' –

158

essayez ce

SELECT CONVERT(DECIMAL(10,2),YOURCOLUMN) 
10

Ce travail pour moi et garde toujours fractions deux chiffres

23,1 ==> 23,10

25,569 ==> 25,56

1 ==> 1,00

Cast(CONVERT(DECIMAL(10,2),Value1) as nvarchar) AS Value2 

Code screenshot

+2

essayez la fonction STR() de Charles Bretana ci-dessus. Cela fonctionne comme votre formule mais fera l'arrondi sur votre exemple 25.569. – JerryOL

+0

Salut ici j'ai une requête comme ceci "SELECT gametype, gameSubType, noofplayers, playerrank, heure de début, fin, CONVERT (décimal (20,10), initialBuy), smallblind, bigblind, winamt, lossamt, salle de poker, nom de salle, dateval, sessiontype, sessionid FROM 'pokerastic_session' O WH sessiontype = 1 et dateval BETWEEN '2013-05-01' et '2013-06-05'" mais c'est grâce à l'erreur pourriez-vous m'aider s'il vous plaît pour convertir la décimale avec deux chiffres – dineshprasanna

0

Cela permettra au total 10 chiffres avec 2 valeurs après la décimale. Cela signifie qu'il peut accepter la valeur avant la décimale jusqu'à 8 chiffres et 2 après la décimale.

Pour valider, placez la valeur dans la requête suivante.

DECLARE vtest number(10,2); 
BEGIN 
SELECT 10.008 INTO vtest FROM dual; 
dbms_output.put_line(vtest); 
END; 
+1

Cela fonctionnera sur Oracle, mais pas sur Microsoft SQL Server. –

0

Multiplier la valeur que vous souhaitez insérer (ex 2.99.) 100

Ensuite, insérez la division par 100 du résultat de l'addition .01 à la fin:

299.01/100 
2

Si vous « re bien avec arrondi le nombre au lieu de le tronquer, il est juste:

ROUND(column_name,decimals) 
4

Si vous avez seulement besoin de deux décimales, le plus simple est ..

SELECT CAST(12 AS DECIMAL(16,2)) 

OU

SELECT CAST('12' AS DECIMAL(16,2)) 

Sortie

12.00 
0

Essayez ceci:

declare @MyFloatVal float; 

    set @MyFloatVal=(select convert(decimal(10, 2), 10.254000)) 

    select @MyFloatVal 

    Convert(decimal(18,2),r.AdditionAmount) as AdditionAmount 
-1

Voici comment les enfants font aujourd'hui:

DECLARE @test DECIMAL (18,6) = 123,456789

FORMAT SELECT (@test, '##. ##') 123,46