2016-09-09 1 views
0
SELECT * FROM table1 WHERE spent>= '1000' 

このクエリでは、598.99と230.909などの数値が引き続き表示されます。私の質問は、1000以上の検索を依頼したときにこれを行うのはなぜですか。クエリにはとにかく等しいので、1000以上しか表示されませんか?データに小数点以下の桁がある場合、どのようにして整数を問い合せる必要がありますか?

+2

列 'spent'でどのようなデータタイプ?また、文字列と数値を比較しないでください。 '' 1000 ''は文字列定数です。数値定数ではありません。 '1000 '(一重引用符なし)は数字です。 –

答えて

0

あなた'1000'がテキスト値であるためです。もう1つの値はテキストでもあるので、バイトごとに比較することになります。

598.991000より大きいため、5...1...より大きいためです。適切な比較を行うための数値型へ

出演:

SELECT * FROM table1 WHERE spent::numeric >= '1000'::numeric 

それとも単に:

SELECT * FROM table1 WHERE spent::numeric >= 1000 
0

数値を比較して数値を比較する必要があります。

使用

WHERE CAST(spent AS numeric) >= 1000 
関連する問題