Location(32.747156999999994 -26.994015989999998)
Location(32.06873196 -27.429944579999997)
Location(32.271466 -27.040925)
Location(32.271466 -27.040925)
Location(32.183663 -28.422186)
Location(32.753835 -26.989512)
答案 0 :(得分:1)
尝试CASE
,SUBSTRING()
和CHARINDEX()
:
SELECT CASE WHEN CHARINDEX(' ',Location)>0 THEN SUBSTRING(Location,1,CHARINDEX(' ',Location)-1) END Longitute
,CASE WHEN CHARINDEX(' ',Location)>0 THEN SUBSTRING(Location,CHARINDEX(' ',Location)+1,len(Location)) END Latitude
FROM Locations
如果数据位于类似“ Location(32.753835 -26.989512)”的位置,则可以简单地REPLACE
“ Location('和')”
SELECT REPLACE(CASE WHEN CHARINDEX(' ',Location)>0 THEN SUBSTRING(Location,1,CHARINDEX(' ',Location)-1) END,'Location(','') Longitute
,REPLACE(CASE WHEN CHARINDEX(' ',Location)>0 THEN SUBSTRING(Location,CHARINDEX(' ',Location)+1,len(Location)) END,')','') Latitude
FROM Locations
答案 1 :(得分:1)
非常实用的方法...
使用一些简单的字符串替换,我们可以动态创建一个SQL语句并使用EXEC()
来执行它:
DECLARE @YourData NVARCHAR(MAX)=
N'Location(32.747156999999994 -26.994015989999998)
Location(32.06873196 -27.429944579999997)
Location(32.271466 -27.040925)
Location(32.271466 -27.040925)
Location(32.183663 -28.422186)
Location(32.753835 -26.989512)';
DECLARE @stmt NVARCHAR(MAX) =
N'SELECT * FROM (VALUES' +
SUBSTRING(REPLACE(REPLACE(@YourData,'Location',','),' ',','),2,100000) +
') tbl(Long,Lat);';
EXEC(@stmt);
创建的语句如下:
SELECT * FROM
(
VALUES(32.747156999999994,-26.994015989999998)
,(32.06873196,-27.429944579999997)
,(32.271466,-27.040925)
,(32.271466,-27.040925)
,(32.183663,-28.422186)
,(32.753835,-26.989512)
) tbl(Long,Lat);
结果
Long Lat
32.747156999999994 -26.994015989999998
32.068731960000000 -27.429944579999997
32.271466000000000 -27.040925000000000
32.271466000000000 -27.040925000000000
32.183663000000000 -28.422186000000000
32.753835000000000 -26.989512000000000
答案 2 :(得分:0)
尝试使用SUBSTRING
方法,您可以在其中设置要创建新字符串的位置:
DECLARE @string VARCHAR(100) = '32.747156999999994 -26.994015989999998'
SELECT SUBSTRING(@string, CHARINDEX(' ', @string) +1, 20)
SELECT SUBSTRING(@string, 0, CHARINDEX(' ', @string) +1)
输出:
-26.994015989999998
32.747156999999994
答案 3 :(得分:0)
您的数据看起来像是字符串格式,可以使用字符串索引功能来识别空间的位置并在此基础上进行分割:
select LocV,substr(LocV,0,instr(locV,' ')) as Longitute,substr(LocV,instr(LocV,' ')+1,length(LocV)) as Latitude from loc
这是演示链接:Demo