2
votes

Comment extraire des chiffres fractionnaires de double

J'ai besoin d'extraire une partie fractionnaire de double en sql, mais sans "0". Par exemple: numéro: 5.67 int: 5 fait: 67


3 commentaires

Combien de chiffres? Tous? Il peut y en avoir beaucoup. Un certain nombre? Alors comment arrondir? C'est aussi une exigence assez étrange (et en tant que telle, peut être mal prise en charge selon les spécificités) - quelle est l'utilisation prévue?


Si c'est pour de l'argent, vous devez utiliser virgule fixe plutôt que flottante .


@ Женя Касьян mes réponses ci-dessous ont des corrections de violon. Ayez un contrôle là-dessus !!!!


3 Réponses :


1
votes

Dans la plupart des bases de données, vous pouvez utiliser quelque chose comme ceci:

select (x * 100) % 100

Dans SQL Server, vous avez d'autres options. Par exemple, pour obtenir la partie fractionnaire, vous pouvez utiliser %:

select floor(100 * (x % 1)) -- or perhaps round()

Pour obtenir deux chiffres:

select (x % 1)


0 commentaires

-1
votes

cela fonctionnera dans oracle:

select substring(CONVERT(varchar, (15+15)/2.0),
                 CHARINDEX('.', CONVERT(varchar, (15+15)/2.0))+1,1);

vérifiez http : //sqlfiddle.com/#! 4 / e2ac5e / 1074

pour mssql:

select substring(CONVERT(varchar, 25.65),CHARINDEX('.', CONVERT(varchar, 25.65))+1,5);

http://sqlfiddle.com/#!18/9eecb/41866

vérifier le dernier un:

select substr(to_char(5.67),instr(to_char(5.67),'.')+1) from dual;

http: // sqlfiddle .com / #! 18 / 9eecb / 41875


3 commentaires

mais j'ai besoin dans MSSQL Server


c'est bien mais si j'utilise, par exemple 34, fact = 34, mais j'ai besoin de fact = 0


@ ЖеняКасьян prenez la colonne + deux fois ou * 2 et divisez-la par 2.0 pour la convertir en double



0
votes
SELECT 5.67 AS Doubles, CAST(5.67  AS INT) AS Fractional_Only, 
PARSENAME(5.67,1) AS DECIMAL_ONLY  

0 commentaires