SQL 切换多边形字符串中的经纬度位置
SQL switch latitude and longitude positions in the polygon string
我有一个包含多边形信息的文本
示例数据:
{"points":[{"lat":49.454912346,"lng":-123.1000021159},{"lat":47.454912346,"lng":-122.1000021159},{"lat":55.454912346,"lng":-121.1000021159},{"lat":52.454912346,"lng":-127.1000021159},{"lat":26.454912346,"lng":-129.1000021159}]
有什么方法可以在 SQL 服务器中交换此字符串中的“lat”和“lng”?
预期结果:
{"points":[{"lng":-123.1000021159,"lat":49.454912346}
感谢任何帮助!
你这里的是 JSON。您可以使用 OPENJSON
分解信息,交换它,然后使用 FOR JSON
:
重建它
DECLARE @json nvarchar(max) = '{"points":[{"lat":49.454912346,"lng":-123.1000021159},{"lat":47.454912346,"lng":-122.1000021159},{"lat":55.454912346,"lng":-121.1000021159},{"lat":52.454912346,"lng":-127.1000021159},{"lat":26.454912346,"lng":-129.1000021159}]'
SELECT j.lng, j.lat
FROM OPENJSON(@json, '$.points')
WITH (lat decimal(18,10), lng decimal(18,10)) j
FOR JSON PATH, ROOT('points');
如果您有一个 table 想要 select,您可以这样做
SELECT
(
SELECT
j.lng, j.lat
FROM OPENJSON(t.json, '$.points')
WITH (lat decimal(18,10), lng decimal(18,10)) j
FOR JSON PATH, ROOT('points')
) AS json
FROM YourTable t;
我有一个包含多边形信息的文本
示例数据:
{"points":[{"lat":49.454912346,"lng":-123.1000021159},{"lat":47.454912346,"lng":-122.1000021159},{"lat":55.454912346,"lng":-121.1000021159},{"lat":52.454912346,"lng":-127.1000021159},{"lat":26.454912346,"lng":-129.1000021159}]
有什么方法可以在 SQL 服务器中交换此字符串中的“lat”和“lng”?
预期结果:
{"points":[{"lng":-123.1000021159,"lat":49.454912346}
感谢任何帮助!
你这里的是 JSON。您可以使用 OPENJSON
分解信息,交换它,然后使用 FOR JSON
:
DECLARE @json nvarchar(max) = '{"points":[{"lat":49.454912346,"lng":-123.1000021159},{"lat":47.454912346,"lng":-122.1000021159},{"lat":55.454912346,"lng":-121.1000021159},{"lat":52.454912346,"lng":-127.1000021159},{"lat":26.454912346,"lng":-129.1000021159}]'
SELECT j.lng, j.lat
FROM OPENJSON(@json, '$.points')
WITH (lat decimal(18,10), lng decimal(18,10)) j
FOR JSON PATH, ROOT('points');
如果您有一个 table 想要 select,您可以这样做
SELECT
(
SELECT
j.lng, j.lat
FROM OPENJSON(t.json, '$.points')
WITH (lat decimal(18,10), lng decimal(18,10)) j
FOR JSON PATH, ROOT('points')
) AS json
FROM YourTable t;