50 votes

SQL - Comment obtenir uniquement les nombres après la virgule ?

Comment obtenir uniquement les nombres après la virgule ?

Exemple : 2.938 = 938

138voto

Pavel Morshenyuk Points 3679

essaye ça:

 SELECT (num % 1)

66voto

SQLMenace Points 68670

à sens unique, fonctionne également pour les valeurs négatives

 declare @1 decimal(4,3)
select @1 = 2.938

select PARSENAME(@1,1)

21voto

RedFilter Points 84190

Vous pouvez utiliser FLOOR :

 select x, ABS(x) - FLOOR(ABS(x))
from (
    select 2.938 as x
) a

Sortir:

 x                                       
-------- ----------
2.938    0.938

Ou vous pouvez utiliser SUBSTRING :

 select x, SUBSTRING(cast(x as varchar(max)), charindex(cast(x as varchar(max)), '.') + 3, len(cast(x as varchar(max))))
from (
    select 2.938 as x
) a

5voto

S.Lott Points 207588

Le hack habituel (qui varie un peu dans la syntaxe) est

 x - floor(x)

C'est la partie fractionnaire. Pour en faire un entier, mettez-le à l'échelle.

 (x - floor(x)) * 1000

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X