gpt4 book ai didi

php - MySQL 查询确定数字是否大于包含负值的 VARCHAR

转载 作者:行者123 更新时间:2023-11-29 08:12:11 27 4
gpt4 key购买 nike

对于一个项目,我将位置点存储在我的 MySQL 数据库中。每个点的纬度和经度数据存储为 varchar。由于我不会详细介绍的原因,它必须保持为 varchar。对于每个新点,我尝试执行搜索以查看数据库中在新点的 0.000300 纬度/经度半径内是否已有任何点。

我的PHP代码如下:($lat和$long是新点的纬度和经度)

$lat1 = $lat - 0.000300;
$lat2 = $lat + 0.000300;
$long1 = $long - 0.000300;
$long2 = $long + 0.000300;

$sql = "SELECT * FROM `DataBase`.`DataBase_data` WHERE `DataBase_data`.`Type`='Point' AND `DataBase_data`.`Lat`>'$lat1' AND `DataBase_data`.`Lat`<'$lat2' AND `DataBase_data`.`Long`>'$long1' AND `DataBase_data`.`Long`<'$long2'";
$query = mysql_query($sql);
echo mysql_error();

当纬度和经度均为正数时,代码可以正常工作。但是,当其中一个(或两个)为负数时,搜索不起作用。我认为这与与包含 - 符号的 varchar 进行“大于”和“小于”比较有关,但我并不肯定。任何有关如何解决该问题的想法将不胜感激。

最佳答案

这是您的查询

SELECT d.*
FROM `DataBase`.`DataBase_data` d
WHERE d.`Type`='Point' AND d.`Lat`> '$lat1' AND d.`Lat`<'$lat2' AND
d.`Long`>'$long1' AND d.`Long`<'$long2';

我的第一个建议是以数字的形式进行比较。您可以在 MySQL 中通过添加 0 轻松转换为数字:

SELECT d.*
FROM `DataBase`.`DataBase_data` d
WHERE d.`Type` = 'Point' AND (d.`Lat` + 0) > $lat1 AND (d.`Lat` + 0) < $lat2 AND
(d.`Long` + 0) > $long1 AND (d.`Long` + 0) < $long2;

这能解决您的问题吗?

关于php - MySQL 查询确定数字是否大于包含负值的 VARCHAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21356165/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com