1

考虑这个相当简单的 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"

两年来,我一直使用这个确切的查询来显示我们传入交易的帐户上所有可能的交易。所有这些“金额”都是正浮动。

现在我正在重复使用传出交易的查询,所以金额总是负数。只要金额是整数,它就可以工作,但是一旦值是浮点数,它就会停止。因此,值前的“-”和金额末尾的“带有两个尾随数字的逗号”的组合会返回语法错误,fe:

Query failed: ERROR: syntax error at or near "," LINE 2: WHERE amount BETWEEN -327,13 AND 0

我尝试在金额周围添加引号,但这没有帮助。

4

2 回答 2

5

尝试使用点而不是逗号:)

于 2013-02-03T18:00:08.127 回答
1

您需要使用to_number将###,## 转换为###.##。SQL 不接受逗号作为数字。试试这样的东西,它适用于逗号和句点:

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

这是SQL Fiddle

祝你好运。

于 2013-02-03T18:01:30.577 回答