在sql中拆分lat和long的字符串

时间:2014-08-07 15:01:31

标签: sql sql-server

我有一个字符串,我需要将lat和long值拆分出来,如何在sql代码中执行此操作

其中一个字符串的示例?我想将2个值保存到我的数据库中的2列中。

  

加拿大:曼尼托巴省53.760861 -98.813876

2 个答案:

答案 0 :(得分:1)

只要格式一致,就可以得到你想要的东西:

DECLARE @ValueToParse VARCHAR(255) = 'Canada: Manitoba 53.760861 -98.813876', @Latitude VARCHAR(25), @Longitude VARCHAR(25)
SELECT  @Latitude = SUBSTRING(@ValueToParse, (PATINDEX('% -%',@ValueToParse) - 9), 9),
        @Longitude = SUBSTRING(@ValueToParse, PATINDEX('% -%',@ValueToParse) + 1, 11)
SELECT @Latitude, @Longitude

如果要解析列' ColumnWithDataToSplit'其中包含lat / long数据,来自表格' YourTable'然后这样做:

SELECT 
    ColumnWithDataToSplit, 
    SUBSTRING(ColumnWithDataToSplit, (PATINDEX('% -%',ColumnWithDataToSplit) - 9), 9) AS [Latitude],
    SUBSTRING(ColumnWithDataToSplit, PATINDEX('% -%',ColumnWithDataToSplit) + 1, 11) AS [Longitude]
FROM YourTable

答案 1 :(得分:0)

DECLARE @TheX INT
DECLARE @TheY INT

SELECT @theX= CHARINDEX(' ', STRING, 2)

SELECT @TheY = CHARINDEX(' ', STRING, CHARINDEX(' ', STRING, 1) + 1)

SELECT      SUBSTRING(STRING, @TheX , @TheY - @TheX - 1) AS X, 
            SUBSTRING(STRING, @TheY) AS Y

我只是将变量分开以便于阅读。使用SUBSTRING是一种方法,但可能更有效的标记化。