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"

私はこの正確なクエリを2年間使用して、着信トランザクションのアカウントで可能なすべてのトランザクションを表示しました。それらの「量」はすべて正のフロートでした。

現在、発信トランザクションのクエリを再利用しているため、金額は常に負になります。金額が整数の場合は常に機能しますが、値が浮動小数点数になるとすぐに停止します。したがって、値の前の「-」と金額の最後の「2つの末尾の数字を持つコンマ」の組み合わせは、構文エラー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

そして、これがSQLFiddleです。

幸運を。

于 2013-02-03T18:01:30.577 に答える