Ivanka Todorova Ivanka Todorova - 1 month ago 5
MySQL Question

Why SUM(`column`) returns a string instead of an integer?

I'm using Laravel and have a query that selects using

DB::raw()
SUM()
of a column:

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


I have installed mysqldn and AFAIK Laravel uses
PDO
.

But
game_points
is a string, no matter what type of the column is. (It's an integer column)

Also if I do:

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


foo_bar
is returned as an integer.

Answer

It's neither Laravel or PDO issue.

According to manual, SUM() returns a DECIMAL value for exact-value arguments (integer or DECIMAL). And the only way to represent DECIMAL type in PHP is string.