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 回答