使用逗号分隔值查询字段

时间:2017-07-04 12:43:21

标签: mysql

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< 0像这样:

SELECT * FROM table WHERE key = 'coords' AND my_lat_value > 38 AND my_lng_value < 0

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

1 个答案:

答案 0 :(得分:1)

您可以使用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