95 votes

CAST DECIMAL en INT

J'essaye de faire ça :

 SELECT CAST(columnName AS INT), moreColumns, etc
FROM myTable
WHERE ...

J'ai regardé les FAQ d'aide ici: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html , il dit que je peux le faire comme CAST(val AS TYPE) , mais ça ne fonctionne pas.

Essayer de convertir un nombre décimal en entier, la valeur réelle est de 223,00 et je veux 223

148voto

RolandoMySQLDBA Points 19439

Vous pouvez essayer la fonction FLOOR comme ceci :

 SELECT FLOOR(columnName), moreColumns, etc 
FROM myTable 
WHERE ... 

Vous pouvez également essayer la fonction FORMAT , à condition de savoir que les décimales peuvent être omises :

 SELECT FORMAT(columnName,0), moreColumns, etc 
FROM myTable 
WHERE ... 

Vous pouvez combiner les deux fonctions

 SELECT FORMAT(FLOOR(columnName),0), moreColumns, etc 
FROM myTable 
WHERE ... 

24voto

Tom Medley Points 9722

De l'article auquel vous avez lié :

Le type peut être l'une des valeurs suivantes :

BINAIRE[(N)]

CHAR[(N)]

DATE

DATEHEURE

DECIMAL[(M[,D])]

SIGNÉ [ENTIER]

TEMPS

NON SIGNÉ [ENTIER]

Essayez SIGNED au lieu de INT

14voto

panda Points 7

utilisez ceci

 mysql> SELECT TRUNCATE(223.69, 0);
        > 223

Voici un lien

11voto

Grbts Points 51

Il existe une différence importante entre floor() et DIV 1. Pour les nombres négatifs, ils se comportent différemment. DIV 1 renvoie la partie entière (comme exprimé comme le fait), tandis que floor(x) renvoie "la plus grande valeur entière non supérieure à x" (du manuel). Donc : select floor(-1.1) donne -2, alors que select -1.1 div 1 donne -1

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