考虑这个相当简单的SQL查询:

"SELECT * FROM transactions
WHERE amount BETWEEN $cost_amount AND 0
AND acc_int IN ('Contant', '647-0191181-84')
AND dos_costs_id IS NULL
AND date + interval '30 days' >= to_date('$cost_date', 'YYYY-MM-DD')
ORDER BY (amount <> to_number('$cost_amount','99999999D99')), date DESC"

我已经使用这个精确的查询两年了,现在显示一个帐户上所有可能的交易,我们的传入交易。所有这些“数额”都是正浮动。
现在我对传出事务重复使用查询,所以金额总是负数。当数量是一个整数时,这就起作用,但只要值是一个浮点数,它就会停止。因此,值前的“-”和金额末尾的“逗号加两个尾随数字”的组合将返回语法错误,例如:
Query failed: ERROR: syntax error at or near "," LINE 2: WHERE amount BETWEEN -327,13 AND 0

我试过在金额上加上引号,但没用。

最佳答案

您需要使用to_number将35;###,###转换为#####。SQL不接受逗号作为数字。试试这样的方法,它可以用于逗号和句点:

SELECT *
FROM YourTable
WHERE amount BETWEEN to_number('-327,13', '99G999') AND 0

这里是SQL Fiddle
祝你好运。

关于php - SQL和负浮点数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14675381/

10-13 22:26