为什么SUM(`column`)返回一个字符串而不是一个整数?

Iva*_*ova 8 php mysql pdo

我正在使用Laravel并且有一个选择使用DB::raw() SUM()列的查询:

DB::raw("SUM(points) as game_points")

我已经安装了mysqldn和AFAIK Laravel使用的PDO.

game_points无论列的类型是什么,都是一个字符串.(这是一个整数列)

如果我这样做:

DB::raw("COUNT(id) as foo_bar")

foo_bar 以整数形式返回.

You*_*nse 12

这既不是Laravel也不是PDO问题.

根据手册,SUM()返回DECIMAL精确值参数(integerDECIMAL)的值.DECIMAL在PHP中表示类型的唯一方法是string.

  • 有趣的是,这就是为什么“CAST(SUM(column) AS INTEGER)”仍然有效并返回一个整数。 (2认同)