使用 MySql 将 DM lat long 转换为十进制

Convert DM lat long to decimal with MySql

我正在尝试将我当前的位置 Lat: S3251 Long: W07122 位置转换为度数格式。
即纬度 -32.8500000,-071.3666667

此数据在 mysql 列中,如下所示:

姓名:职位:

Ship1 S3251 W07122

我正在尝试弄清楚 mysql 查询以像这样显示它:

姓名:纬度:经度:

Ship1 -32.8500000 -071.3666667

所以我可以在 Google 地图上使用它,这需要小数形式的经纬度。

如何使用 mysql 转换它?
谢谢

您可以使用一些函数来分隔要在公式中使用的数据值。下面的示例查询:

SELECT CASE WHEN latt LIKE 'S%' THEN (SUBSTRING(latt,2,2)+(RIGHT(latt,2)/60)+(0/3600))*-1 
            WHEN latt LIKE 'N%' THEN SUBSTRING(latt,2,2)+(RIGHT(latt,2)/60)+(0/3600) END AS 'Latitude',
       CASE WHEN longt LIKE 'W%' THEN (SUBSTRING(longt,2,3)+(RIGHT(longt,2)/60)+(0/3600))*-1 
            WHEN longt LIKE 'E%' THEN SUBSTRING(longt,2,3)+(RIGHT(longt,2)/60)+(0/3600) END AS 'Longitude'
FROM test1;

如您所见,我使用 CASE 表达式来确定方向,SUBSTRING()RIGHT() 函数来分隔公式的度数和分钟值。

P/S:或者,您可以将 SUBSTRING() 替换为 MID()。两者操作相同,后者写起来要短得多。

这是使用您在评论中提供的 first link 中的公式:

我在这里做了一个例子 fiddle:https://www.db-fiddle.com/f/cJjaArst8aZmQesyWDDXim/1