使用 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
我正在尝试将我当前的位置 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