SQL SERVER 计算经纬度函数

USE [SmartWater_MXL]
GO
/****** Object:  UserDefinedFunction [dbo].[getLon]    Script Date: 2022/1/11 17:27:28 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<祥子>
-- Create date: <2022-01-11>
-- Description:	<数据导入所用经度>
-- 经纬度的算法问题,111°5126 〃或111°5126.4 〃格式
--标量值函数sql server 专用
-- =============================================
ALTER function [dbo].[getLon](@Longitude varchar(100))
returns decimal(10,6)
as
begin
DECLARE @retLon decimal(10,6)
DECLARE  @nmb int
DECLARE  @maths decimal(10,6)
DECLARE  @wenben varchar(20)
DECLARE  @leng int
DECLARE  @str decimal(10,6);

  select @nmb= CHARINDEX('.',REPLACE(REPLACE(REPLACE(@Longitude,'′','-'),'″',''),'°','-'),0) 
	if(@nmb=0)
		select @wenben= REPLACE(REPLACE(REPLACE(REPLACE(@Longitude,'′','.'),'″',''),'°','.'),'',' ')
	else
		select @wenben= REPLACE(REPLACE(SUBSTRING(REPLACE(REPLACE(REPLACE(@Longitude,'′','-'),'″',''),'°','-'),0,@nmb),'-','.'),'〃',' ')

	set @leng =len( SUBSTRING(REPLACE(REPLACE(REPLACE(REPLACE(@Longitude,'′','.'),'″',''),'°','.'),'',' '),@nmb+1,len(@Longitude)))
	set @str = cast (SUBSTRING(REPLACE(REPLACE(REPLACE(REPLACE(@Longitude,'′','.'),'″',''),'°','.'),'',' '),@nmb+1,len(@Longitude)-1) as int)
	if (@leng='1')
	begin
	set @str= @str*0.000028
	end
	else if (@leng='2')
	begin
	set @str = @str*0.000003
	end
	else
	set @str=0
	set @maths=
			cast(
			cast( PARSENAME(@wenben,3)as decimal(10,6) )+(
			cast( PARSENAME(@wenben,2)as decimal(10,6) )+(
			cast( PARSENAME(@wenben,1)as decimal(10,6) ))/60)/60 as decimal(10,6))	+@str
return @maths
end;
--业务逻辑直接调用即可.必须加dbo.名
select dbo.getLon(Longitude) as Longitudechange from temp11

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟吶李唦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值