美好的一天,
我对T-SQL相当新,并且遇到了我需要解决的以下问题 我有一个包含二进制值的表,我需要将它们转换为Lat和Long。
Hemisphere LAT Latitude Hemisphere LONG Longitude
+ 100010100100000011 - 0000110000001111111
+ 100010100100000100 + 0000110000001110011
+ 100010100010111101 + 0000110000010100100
如何从二进制值中提取lat long?我有3750 ROWS转换为Lat Long,并且想知道它是否可以在MSSQL中使用。
答案 0 :(得分:0)
如果二进制值是Geometry类型,则可以执行以下操作:
SELECT
Geometry.Lat as [Latitude],
Geometry.Long as [Longitude]
FROM dbo.tbl
答案 1 :(得分:0)
你应该找出你的(Lat,Long)存储的方式 - 它将取决于如何正确对待它们以获得有意义的值。 无论如何,这可以允许将2基二进制值转换为基于10的:
DECLARE @Input varchar(255) = '100010100100000011'
DECLARE @Cnt tinyint = 1
DECLARE @Len tinyint = LEN(@Input)
DECLARE @Output bigint = CAST(SUBSTRING(@Input, @Len, 1) AS bigint)
WHILE(@Cnt < @Len) BEGIN
SET @Output = @Output + POWER(CAST(
SUBSTRING(@Input, @Len - @Cnt, 1) * 2 AS bigint), @Cnt)
SET @Cnt = @Cnt + 1
END
select @Output
--------------
141571
另外,我认为this article会对你有所帮助