我在MySQL数据库中存储了一些点,它们存储为具有x和y值的POINT类型。我正在尝试使用WHERE子句中的x和y值来搜索和返回特定的点。
下面是一个我正在尝试处理的查询示例:
"SELECT id, x(coords) AS lng, y(coords) AS lat
FROM my_points
WHERE x(coords) = $lng AND y(coords) = $lat"
但这并不奏效。我没有MySQL空间类型的经验,任何帮助都将不胜感激!
下面的评论提供了更多信息:
我应该提到,我实际上使用了一个PHP框架ORM来进行DB查询,我上面写的SQL只是假设代表了我试图使用ORM的语法来实现的目标。我不认为ORM有问题,因为我以前在WHERE子句中使用过其他函数。我只是不太确定在"WHERE"子句中使用"x()=lng AND y()=lat"是否正确。使用正常正确的SQL语法,在WHERE子句中使用x()AND y()可以得到我想要的内容吗?
如果列名中确实有括号,则需要对其进行反勾:
SELECT `id`, `x(coords)` AS `lng`, `y(coords)` AS `lat`
FROM `my_points`
WHERE `x(coords)` = $lng AND `y(coords)` = $lat
所有未加引号的列名和表名都可以由服务器默认字符集中的任何字母数字字符加上字符"_"one_answers"$"组成。名称可以以名称中合法的任何字符开头,包括数字。
列名和表名都是反勾号,这允许使用除反勾号、ASCII 0和ASCII 255之外的任何字符。当名称包含特殊字符或是保留字时,这很有用。
数据库和表名还有两个额外的限制,即使您对它们进行了反勾。首先,不能使用"。"字符,因为它是database_name.table_name和database_name.ttable_name.col_name表示法中的分隔符。其次,不能使用UNIX或Windows路径名分隔符("/"或"\")。