En utilisant T-SQL et Microsoft SQL Server, je voudrais spécifier le nombre de chiffres décimaux lorsque je fais une division entre 2 nombres entiers comme:
select 1/3
Cela revient actuellement 0
. J'aimerais qu'il revienne 0,33
.
Quelque chose comme:
select round(1/3, -2)
Mais ça ne marche pas. Comment puis-je obtenir le résultat souhaité?
sql-server
sql-server-2008
division
rounding
LaBracca
la source
la source
Réponses:
Les suggestions de stb et xiowl conviennent si vous recherchez une constante. Si vous devez utiliser des champs ou des paramètres existants qui sont des entiers, vous pouvez d'abord les convertir en flottants:
ou
la source
decimal
Parce que SQL Server effectue une division entière. Essaye ça:
Ceci est utile lorsque vous passez des entiers en tant que paramètres.
la source
Il n'est pas nécessaire de les lancer tous les deux. Le type de données de résultat pour une division est toujours celui avec la priorité de type de données la plus élevée . Ainsi, la solution doit être:
ou
la source
utilisation
Cela fera le travail.
la source
Je comprends que
CAST
ing toFLOAT
n'est pas autorisé dans MySQL et générera une erreur lorsque vous tenterez de le faireCAST(1 AS float)
comme indiqué sur MySQL dev .La solution de contournement à ce problème est simple. Fais juste
Ensuite, utilisez
ROUND
pour obtenir un nombre spécifique de décimales commeLe SQL ci-dessus divise 1 par 2 et renvoie un flottant à 3 décimales, comme dans ce cas
0.500
.On peut
CAST
les types suivants: binaire, char, date, datetime, décimal, json, nchar, signé, heure et non signé .la source
CAST
, il n'autorise tout simplement pas la diffusionFLOAT
. DiffusezDECIMAL
plutôt sur. Voir par exemple stackoverflow.com/questions/7368163/… .On dirait que cette astuce fonctionne dans SQL Server et est plus courte (basée sur les réponses précédentes)
Ou:
la source
SELECT 100.0 * @Elapsed / @Total
Utilisez ceci
select cast((1*1.00)/3 AS DECIMAL(16,2)) as Result
Ici, dans ce sql, convertissez d'abord en flottant ou multipliez par 1,00. Quelle sortie sera un nombre flottant. Ici, je considère 2 décimales. Vous pouvez choisir ce dont vous avez besoin.
la source
Si vous êtes venu ici (tout comme moi) pour trouver la solution pour la valeur entière , voici la réponse:
renvoie 5
la source