CAST DECIMAL到INT
我正在尝试这样做:
SELECT CAST(columnName AS INT), moreColumns, etc FROM myTable WHERE ...  我已经在这里看了帮助FAQ: http : //dev.mysql.com/doc/refman/5.0/en/cast-functions.html ,它说我可以像CAST(val AS TYPE) ,但它是不工作。 
试图将小数转换为整数,实际值是223.00,我想要223
你可以尝试这样的FLOORfunction:
 SELECT FLOOR(columnName), moreColumns, etc FROM myTable WHERE ... 
你也可以尝试FORMAT函数,只要你知道小数位可以省略:
 SELECT FORMAT(columnName,0), moreColumns, etc FROM myTable WHERE ... 
你可以结合这两个function
 SELECT FORMAT(FLOOR(columnName),0), moreColumns, etc FROM myTable WHERE ... 
从您链接到的文章:
该types可以是以下值之一:
BINARY [(N)]
CHAR [(N)]
date
约会时间
DECIMAL [(M [,d])]
签名[INTEGER]
时间
UNSIGNED [INTEGER]
 尝试SIGNED而不是INT 
在这个目的的mysql更优化的方式*:
 SELECT columnName DIV 1 AS columnName, moreColumns, etc FROM myTable WHERE ... 
使用DIV 1比FLOOR 速度更快 ,更不用说像FORMAT那样的基于string的函数了
(*)注意:正如Grbts所指出的,当使用非无符号/正值时,请注意DIV 1的行为。
floor()和DIV 1之间有一个重要的区别。对于负数,它们的行为有所不同。 DIV 1返回整数部分(如带符号的那样),floor(x)返回“不大于x的最大整数值”(从手册中)。 所以: selectfloor(-1.1)的结果是-2,而select-1.1 div 1的结果是-1
用这个
 mysql> SELECT TRUNCATE(223.69, 0); > 223 
这是一个链接
CAST()函数不支持MySQL中的“官方”数据types“INT”,它不在支持的types列表中 。 对于MySQL,可以使用“SIGNED”(或“UNSIGNED”)代替:
 CAST(columnName AS SIGNED) 
 但是,这似乎是MySQL特定的(不标准化的),所以它可能不适用于其他数据库。 至less这个文件(第二次非正式审查草案)ISO / IEC 9075:1992,数据库在第4.4 Numbers中没有列出“SIGNED”/“UNSIGNED”。 
但是DECIMAL既是标准化的,也是MySQL的支持,所以下面这个应该适用于MySQL(testing过的)和其他数据库:
 CAST(columnName AS DECIMAL(0)) 
根据MySQL文档 :
如果比例为0,则DECIMAL值不包含小数点或小数部分。
还有ROUND(),如果你的数字不一定总是以.00结尾。 圆(20.6)会给21,圆(20.4)会给20。
你可以试试这个:
 SELECT columnName1, CAST(columnName2 AS SIGNED ) FROM tableName 
 尝试cast (columnName as unsigned) 
无符号的只是正值
 如果你想包括负值,然后cast (columnName as signed) , 
 符号(负号包括)与无符号号(符号大小的两倍,但非负号) 
1分:没有空格b / w CAST和(表情)。 即CAST(columnName AS SIGNED)。