在 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]);
我想从数据库中获取数据,但是比较的值的格式不符合。
数据库中的数字以奇怪的格式保存 - 有时四舍五入,其中一些是小数(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]);