我有一个字符串,我需要将lat和long值拆分出来,如何在sql代码中执行此操作
其中一个字符串的示例?我想将2个值保存到我的数据库中的2列中。
加拿大:曼尼托巴省53.760861 -98.813876
答案 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是一种方法,但可能更有效的标记化。