如何仅将部分 JSON 元素插入 SQL 字段
Posted
技术标签:
【中文标题】如何仅将部分 JSON 元素插入 SQL 字段【英文标题】:How to insert only a portion of the JSON element into a SQL field 【发布时间】:2020-05-05 15:30:37 【问题描述】:我在 SQL Server 2016 存储过程中使用以下代码,我想将 Journal ISSN 值拆分为 2 个不同的字段。
DECLARE @json nVARCHAR(MAX) =
'["Journal ISSN" : "15221059, 15309932",
"Journal ISSN" : "23660058, 2366004X"]'
INSERT INTO A_ADMIN_IMPACT_FACTORS_2020 ([Journal ISSN], [ISSN FirstEight], [ISSN SecondEight_if Comma])
SELECT [Journal ISSN]
FROM OPENJSON(@json)
WITH ([Journal ISSN] nvarchar(50))
我已经尝试添加
SUBSTRING ([Journal ISSN],1,8) nvarchar(50)
在不同的地方,但我确定语法是错误的。
有人可以指出我正确的方向,以便我最终得到三列吗?
具有完整价值的一个 第一个部分在逗号或整个值(如果没有逗号)和 一个逗号后剩下的内容当我输入此内容时,我发现我可能能够使用计算列,但我仍然想知道如何在存储过程中做到这一点。
【问题讨论】:
【参考方案1】:我知道了;
INSERT INTO A_ADMIN_IMPACT_FACTORS_2020 ([Journal ISSN], [ISSN Primary], [ISSN
Secondary])
SELECT [Journal ISSN], SubString([Journal ISSN],1,8) as [ISSN Primary], CASE WHEN
CHARINDEX(',', [Journal ISSN]) > 1 THEN SubString([Journal ISSN], 11,8) ELSE ''
END AS [ISSN Secondary]
FROM OPENJSON(@json)
WITH ([Journal ISSN] nvarchar(50)
【讨论】:
以上是关于如何仅将部分 JSON 元素插入 SQL 字段的主要内容,如果未能解决你的问题,请参考以下文章