我的查询语句中的IF()子句有问题。我只是将一个整数移动到我在查询语句中动态创建的另一列,但该整数失去了其属性分类,MySQL将其视为字符串。
mysql_query('
SELECT id, statusDate, displayName, earnings,
IF(statusDate <> "0000-00-00 00:00:00", earnings, "0") as earnings1
FROM my_table
ORDER BY statusDate, earnings1 DESC, displayName
');
我在表中有一些earnings
,如10、50、200等。
由于我是按降序排列的,因此我希望:2005010
但我得到的是:1020050
当移动到earnings1
时,如何将earnings
保留为整数,有什么想法吗?
谢谢。
如果IF
函数中的两个参数都是数字,则不应该出现此问题。因此,如果earnings
是数字,请对您的earnings1
值尝试以下操作:
IF(status <> "0000-00-00 00:00:00", earnings, 0) as earnings1
^ note no more quotes
您可能需要使用CASE语句,更重要的是,从0中删除引号以保留int数据类型。
SELECT id, statusDate, displayName, earnings,
CASE WHEN statusDate <> "0000-00-00 00:00:00"
THEN earnings
ELSE 0
END as earnings1
FROM my_table
ORDER BY statusDate, earnings1 DESC, displayName
这对你有用吗?
SELECT id, statusDate, displayName, earnings,
(CAST( IF(statusDate <> "0000-00-00 00:00:00", earnings, 0) AS SIGNED)) as earnings1