2

phpmyadmin を使用してデータベースとテーブルを作成しています。問題のテーブルには次の列があります。

出発都市 | 到着都市 | 離陸日 | 離陸時間 | 着陸時間 | 航空会社名 | 価格

今、このクエリを使用するたびに;

select * from mynewdatabase.flights where DepartureCity = 'Rome' and ArrivalCity = 'Istanbul' and TakeoffDate = '12.06.2013' and price <= '75' ORDER BY Price

何もないのではなく、すべての行を取得します。価格が 75 € 未満のフライトはないため、何も期待できません。すべてのフィールドはテキストです。これの原因は何ですか?また、期待どおりに空の結果を得るにはどうすればよいですか?

編集: たとえば、同じクエリを使用して価格 <= '400' を指定すると、価格が 400 以下のフライトのみが返されます。基準を満たすフライトがない場合にのみ、エラーが発生します。

4

1 に答える 1

2

ご想像のとおり、mysql はテキストではなく数値を比較します。

列の価格が任意の数値型の場合、次のように記述します。

and price <= 75

それがテキストであり、それをテキストとして保持したい場合は、CAST で変換する必要があります。

SELECT * FROM mynewdatabase.flights WHERE Price<=75 ORDER BY CAST(Price AS SIGNED);

これにより、クエリされたテキスト値が符号付き (整数) に変換され、列の型はテキストのままになります。

于 2013-06-11T01:40:48.230 に答える