在where子句中格式化数据库中的十进制值

时间:2019-01-25 07:37:54

标签: sql laravel laravel-5.1

我想从数据库中获取数据,但是比较的值的格式却不相符。

数据库中的数字以奇怪的格式保存-有时四舍五入,其中一些是小数(10、14、15、12.44、16.10等)

在数组中,我的值虽然四舍五入为两位小数。

我想像这样从数据库中获取数据:

$foundPayments = $this>paymentsRepo>newQuery()>whereRaw("CONVERT(DECIMAL(10,2),payments.amount) = :payments", ['payments' => $payments]);

考虑到这一点,我最终遇到了这样的错误:Syntax error: 7 ERROR: syntax error at or near ","

我不确定代码是否可以像我一样在laravel 5.1中发送参数,但是那并不是我真正关心的-即使我不使用变量,也会出现同样的错误。

编辑:

我正在使用Postgres。

1 个答案:

答案 0 :(得分:1)

我认为您用于convert函数的语法是错误的。您应该首先传递值,然后传递您要转换为的类型。 但是请尝试强制转换功能,我认为它应该可以给您预期的结果。

$foundPayments = $this->paymentsRepo->newQuery()
    ->whereRaw("CAST(payments.amount as DECIMAL(10,2)) = :payments", 
              ['payments' => $payments]);