SELECT * FROM table1 WHERE spent>= '1000'
このクエリでは、598.99と230.909などの数値が引き続き表示されます。私の質問は、1000以上の検索を依頼したときにこれを行うのはなぜですか。クエリにはとにかく等しいので、1000以上しか表示されませんか?データに小数点以下の桁がある場合、どのようにして整数を問い合せる必要がありますか?
SELECT * FROM table1 WHERE spent>= '1000'
このクエリでは、598.99と230.909などの数値が引き続き表示されます。私の質問は、1000以上の検索を依頼したときにこれを行うのはなぜですか。クエリにはとにかく等しいので、1000以上しか表示されませんか?データに小数点以下の桁がある場合、どのようにして整数を問い合せる必要がありますか?
あなた'1000'
がテキスト値であるためです。もう1つの値はテキストでもあるので、バイトごとに比較することになります。
598.99
が1000
より大きいため、5...
が1...
より大きいためです。適切な比較を行うための数値型へ
出演:
SELECT * FROM table1 WHERE spent::numeric >= '1000'::numeric
それとも単に:
SELECT * FROM table1 WHERE spent::numeric >= 1000
数値を比較して数値を比較する必要があります。
使用
WHERE CAST(spent AS numeric) >= 1000
列 'spent'でどのようなデータタイプ?また、文字列と数値を比較しないでください。 '' 1000 ''は文字列定数です。数値定数ではありません。 '1000 '(一重引用符なし)は数字です。 –