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

Format decimal value in database in where clause

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

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

虽然在数组中我的值四舍五入到 2 位小数。

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

$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。

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

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