mysql - SQL - 使用对象属性作为函数的参数

标签 mysql sql geospatial

我正在努力制定正确的 sql 查询来访问存储在我的列之一中的对象的属性并将其用作函数的输入:

  • 我有一个“搜索”表
  • 在“搜索”中,有一列名为“坐标”并存储 POINT-Objects
  • 我定义了一个函数“test”,它获取双输入参数并仅将输入参数返回为双

我想进行如下查询

SELECT test('coord.X') as res FROM `search` ORDER BY res

预期结果:名为“res”的列中列出的 coord.X 值,按从最低到最高的顺序排列。

我得到的每个条目都是“0”(坐标 X/Y 值当然设置为任意值)。

如果我留下的 coord.X 周围没有“'”,则查询会失败并出现错误

#1054 - Unknown column 'coord.X' in 'field list'

我搜索了很多,但找不到任何页面告诉我如何访问 sql-objects 的属性。非常感谢任何帮助。

最佳答案

考虑不带测试函数的示例查询。

SELECT coord.X as res FROM `search` ORDER BY res

Sql 将 coord.X 视为列名,并在 search 中查找该列。由于 X 是 coord 的属性,而不是列名的一部分,因此这就是导致错误的原因。

使用

SELECT test(X(coord)) as res FROM `search` ORDER BY res

应该产生正确的结果。正如调用测试函数的语法是 test() 一样,调用 X 函数(在空间扩展中定义)的语法是 X()。但是,此函数不适用于未显式声明为 Point 类型的列,因为 sql 将不知道如何解析该值并返回指定的信息。

本质上,X() 与许多其他 mysql 函数类似,例如 ISNULL()SUM()。正如 SUM() 期望 int 数据类型作为输入一样,X() 期望 Point 数据类型。

关于mysql - SQL - 使用对象属性作为函数的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24867983/

相关文章:

php - 奇怪的 php require/include 错误

php - 尝试使用函数调用sql查询时的警告消息和通知

sql - Liquibase 目前是如何处理字符编码的?

mongodb - 为什么不用B+-Tree MongoDB

mysql - 如何将地理空间数据从 MySQL 读取到 R 中?

c# - 嵌套 MySQL 查询的解决方法?

mysql。同一个表中重复的自增键

sql - 根据 SQL 中列值的数量返回行

Mysql:如果前一行与当前行相同,则更新当前值

javascript - 地理空间框查询 - Mongoose、Node.js MongoDB - 不返回任何结果