2010-05-01 9 views
0

Salut c'est mon code mais quand je l'exécute dans mysql il montrera une erreur à cause du type de données mais mon ami l'a vérifié avec sql server et il ne montre pas l'erreur et insère également la valeur: 32769 .which d'eux est correct ?quel est le résultat?

CREATE TABLE T1 (A INTEGER NOT NULL); 
INSERT T1 VALUES (32768.5); 
+0

ça marche pour moi dans une base MySQL 1.2.12? quel est ton? – Salil

+0

le mien est 1.1.6, la réponse sera la différence pour les verions de différence de mysql? – user329820

+0

Vous utilisez MySQL v1.1.6? Vous utilisez un logiciel vieux de 20 ans et vous ne pensez pas que cela vaut la peine d'être mentionné dans la question? Ou plus probablement vous avez obtenu la version de la base de données confondue avec la version du logiciel que vous utilisez pour interroger la base de données ... –

Répondre

0

Votre ami est correct. MySQL convertit le nombre en entier lorsque vous l'insérez. Il n'y a pas d'erreur.

CREATE TABLE T1 (A INTEGER NOT NULL); 
INSERT T1 VALUES (32768.5); 
SELECT * FROM T1; 

Résultat:

A 
32769 

Informations sur la version:

SELECT @@VERSION; 
'5.1.41-community' 
1

MySQL est (à juste titre à mon avis) se fâcher parce que vous avez fourni une valeur FLOAT à une colonne qui attend une ENTIER.

MS-SQL effectue une conversion implicite dans les coulisses, mais personnellement je pense que cela est mauvais baheaviour - et la réponse de MySQL (l'erreur) est correct ...

+0

Je ne l'ai pas testé - mais une autre chose que vous pourriez vouloir penser est la gamme du type de données Integer ... –