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

存储过程中使用OPENJSON时如何实现条件取不同JSON键值

实现方法

完全可以实现这个需求,具体做法是在OPENJSON的WITH子句中同时解析shortName和longName两个字段,再通过COALESCE函数优先取shortName的值,当shortName不存在时自动 fallback 到longName。

修改后的存储过程代码如下:

CREATE PROCEDURE dbo.uspAddToTable 
    @json NVARCHAR(MAX)
AS
BEGIN
    INSERT INTO dbo.MyTable (id, name)
        SELECT 
            id, 
            COALESCE(shortName, longName) AS name
        FROM OPENJSON(@json) 
        WITH 
            (
                id integer '$.id',
                shortName varchar(100) '$.shortName',
                longName varchar(100) '$.longName'
            ) tbl
END

说明:

  • COALESCE函数会返回参数列表中第一个非NULL的值,正好匹配你“优先用shortName,无则用longName”的逻辑
  • 当JSON对象中不存在对应键时,OPENJSON会返回NULL,所以这个方法可以完美处理你的场景
  • 你也可以用ISNULL(shortName, longName)替代COALESCE,二者在这个场景下效果一致,但COALESCE支持更多备选值,扩展性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 17:10:32