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 Réponses :
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)
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;
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
SELECT 5.67 AS Doubles, CAST(5.67 AS INT) AS Fractional_Only, PARSENAME(5.67,1) AS DECIMAL_ONLY
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 !!!!