table将坐标存储在单个value字段中,例如

ID  key     value
============================
20  coords  38.5931,-90.2226
21  coords  35.7977,-78.6253
22  coords  37.555,-122.2687
23  coords  41.1412,-73.2637
24  coords  47.4716,8.2925
29  coords  42.3626,-71.0843
30  coords  -27.6333,-48.65


查询此字段的最佳方法是什么?

基本上,我想像lat> 38和lng
SELECT * FROM table WHERE key = 'coords' AND my_lat_value > 38 AND my_lng_value < 0


不幸的是,没有办法将它们拆分为专用字段

最佳答案

您可以使用SUBSTRING_INDEX函数来解析该字段。

https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_substring-index

SELECT CAST(SUBSTRING_INDEX(value, ',', 1) AS DECIMAL(10,2)),
       CAST(SUBSTRING_INDEX(value, ',', -1) AS DECIMAL(10,2))
FROM MYTABLE

关于mysql - 查询以逗号分隔的值的字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44906334/

10-10 18:48