我很想知道我是否可以使用字符串操作通过单个查询提取多个数据。?
这就是我要找的东西 我的查询返回
+-----------------------------------------+
| geodata |
+-----------------------------------------+
| {"lat"=>"28.644348", "lon"=>"77.219682" |
+-----------------------------------------+
我可以通过任何字符串查询提取lat
值和lon
值吗?
我尝试并成功提取单个值。
谁能建议我怎么做?
当然,我可以在将这些数据提取到我的rails应用程序后执行此操作,但我正在考虑直接从查询中提取此数据。答案 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