mysql - SQL 查询将我的数字返回为字符串而不是整数

标签 mysql laravel

当我按列对表格进行排序时,我发现我的数字排序错误,因为我的数字是字符串。我找到了一个执行 CAST(COALESCE(p.total,0) AS UNSIGNED) 的解决方案,现在它将它们作为整数返回。我觉得我需要对所有号码都这样做很不方便?有人可以解释一下为什么它会那样做或者我做错了什么吗?

$result = DB::select(DB::raw(
    "SELECT i.date,
    u.type,
    CONCAT_WS(' ', u.first_name, u.last_name) AS consultant,
    c.name AS customer,
    CAST(COALESCE(e.pp,0) AS UNSIGNED) AS pp,
    CAST(COALESCE(e.sp,0) AS UNSIGNED) AS sp,
    CAST(COALESCE(e.sp,0) - COALESCE(e.pp,0) AS UNSIGNED) AS margin,
    CAST(COALESCE(p.total,0) AS UNSIGNED) AS total_purchase,
    CAST(COALESCE(i.total, 0) AS UNSIGNED) AS total_sales,
    CAST(COALESCE(i.total,0) - COALESCE(p.total,0) AS UNSIGNED) AS gross_margin
    FROM clockwork.invoices AS i
    INNER JOIN clockwork.timesheets AS t ON i.timesheet_id = t.id
    LEFT OUTER JOIN clockwork.purchases AS p ON t.id = p.timesheet_id
    INNER JOIN clockwork.users AS u ON i.user_id = u.id
    INNER JOIN clockwork.customers AS c ON i.customer_id = c.id
    LEFT OUTER JOIN clockwork.contract_extensions AS e ON i.extension_id = e.id
    WHERE i.date between '$request->start' and '$request->end'
    GROUP BY i.date, u.type, u.first_name, u.last_name, c.name, e.pp, e.sp, p.total, i.total
    ORDER BY u.first_name
"));

最佳答案

我找到了正确的解决方案 here

也许它可以解决您的问题? 问候

关于mysql - SQL 查询将我的数字返回为字符串而不是整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54941292/

相关文章:

php - 预替换问题

javascript - 如何从我的 laravel Controller 获取值并将其设置在 public 文件夹中的 javascript 文件中?

javascript - Laravel 7.5.2(护照 Api)+ Ajax 错误 : Undefined index: aud ,\\vendor\\laravel\\passport\\src\\Guards\\TokenGuard.php

php - 将二维码显示为 PDF 流,Laravel 4.2

laravel - Uncaught ReferenceError : Vue is not defined when using laravel-mix webpack

php - 如果行存在则更新或如果不基于 user_id 则插入

php - 在数千个 MYSQL 查询中插入几行的最快方法

php - 在 zend 框架中为以下内容编写删除查询

php - 如何查询列中具有特定值的最新记录

laravel - 将自定义变量添加到 Laravel 错误日志