You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何交换多边形JSON字符串内的lat与lng坐标位置

SQL Server交换点位JSON中lat与lng字段位置的可行方案

以下方案均支持SQL Server 2016及以上版本,其中正则方案需要SQL Server 2017+运行环境。

方案1:原生JSON解析重构(最稳定,推荐使用)

通过SQL Server原生JSON函数解析点位数组,重新构造每个点位的键顺序后再拼接为目标JSON,完全避免格式匹配错误的问题。

DECLARE @InputJson NVARCHAR(MAX) = N'{"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}]}'

-- 解析并重构JSON
SELECT 
    (
        SELECT lng, lat 
        FROM OPENJSON(JSON_QUERY(@InputJson, '$.points'))
        WITH (
            lat FLOAT '$.lat',
            lng FLOAT '$.lng'
        )
        FOR JSON PATH, ROOT('points')
    ) AS OutputJson

方案2:正则快速替换(适合格式固定的批量场景)

如果你的所有JSON文本格式高度统一,点位字段顺序固定为lat在前、lng在后,且中间无多余空格,可以用正则替换快速处理。

DECLARE @InputJson NVARCHAR(MAX) = N'{"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 REGEXP_REPLACE(
    @InputJson,
    '"lat":([0-9\.-]+),"lng":([0-9\.-]+)',
    '"lng":$2,"lat":$1'
) AS OutputJson

注意:如果JSON中lat和lng之间存在空格、或者字段顺序有不一致的情况,该方案可能失效,优先选择方案1。

内容的提问来源于stack exchange,提问作者dye

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:24:04