Mysql
 sql >> Database >  >> RDS >> Mysql

Come evitare la conversione implicita di MySQL (valore DOUBLE errato troncato)

Dovresti piuttosto provare a trasmetterlo in modo esplicito usando CAST o CONVERT funzionano come di seguito e non contano sul casting implicito.

SELECT * FROM test WHERE sample_col = cast('foo' as int);

(OR)

SELECT * FROM test WHERE cast(sample_col as varchar) = 'foo';

Inoltre, non ha senso confrontare un INT digitare la colonna con string value e AFAIK, non è presente alcuna impostazione per interrompere il cast implicito. se vuoi davvero generare un errore piuttosto che convertirlo in 0, eseguilo in modo esplicito; nel qual caso si verificherà un errore.

Vedere Digitare la conversione nella valutazione delle espressioni Per maggiori informazioni.