我们可以使用mysql中的字符串函数从单个查询中提取多个数据吗?

时间:2014-11-27 13:14:02

标签: mysql substring

我很想知道我是否可以使用字符串操作通过单个查询提取多个数据。?

这就是我要找的东西 我的查询返回

+-----------------------------------------+
|               geodata                   |
+-----------------------------------------+
| {"lat"=>"28.644348", "lon"=>"77.219682" |
+-----------------------------------------+

我可以通过任何字符串查询提取lat值和lon值吗?

我尝试并成功提取单个值。

谁能建议我怎么做?

当然,我可以在将这些数据提取到我的rails应用程序后执行此操作,但我正在考虑直接从查询中提取此数据。

1 个答案:

答案 0 :(得分:1)

是的,可以假设您显示的模式相同

mysql> select replace(substring_index(substring_index('{"lat"=>"28.644348", "lon"=>"77.219682"','"lat"=>',-1),',',1),'"','') as lat;
+-----------+
| lat       |
+-----------+
| 28.644348 |
+-----------+
1 row in set (0.00 sec)

mysql> select replace(substring_index(substring_index('{"lat"=>"28.644348", "lon"=>"77.219682"','"lon"=>',-1),',',1),'"','') as lon;
+-----------+
| lon       |
+-----------+
| 77.219682 |
+-----------+

所以最后你可以将它们组合成一个选择

select 
replace(substring_index(substring_index(geodata,'"lat"=>',-1),',',1),'"','') as lat,
replace(substring_index(substring_index(geodata,'"lon"=>',-1),',',1),'"','') as lon
from your_table