我正在努力制定正确的sql-query来访问存储在我的一个列中的对象的属性,并将其用作函数的输入:
我想进行查询,例如
SELECT test('coord.X') as res FROM `search` ORDER BY res
预期结果:名为' res'的列中列出的coord.X值从最低到最高排序。
我得到的是' 0'对于每个条目(coord X / Y值当然设置为任意值)。
如果我离开coord.X而没有"'"在它周围,查询失败并显示错误
#1054 - Unknown column 'coord.X' in 'field list'
我搜索了很多,但我找不到任何页面告诉我如何访问sql-objects的属性。非常感谢任何帮助。
答案 0 :(得分:0)
查询不应该是:
SELECT coord as res FROM search
ORDER BY res
也许我没有正确理解你的问题。
答案 1 :(得分:0)
考虑没有测试功能的示例查询。
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数据类型。