1

我在 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) 

在不同的地方,但我确信语法是错误的。

有人可以指出我正确的方向,以便我最终得到三列吗?

  • 一个具有完整值
  • 如果没有逗号,则第一个部分在逗号或整个值上,并且
  • 一个带有逗号后剩余的内容

当我输入这个时,我可能会使用计算列,但我仍然想知道如何在存储过程中做到这一点。

4

1 回答 1

0

我知道了;

     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)  
于 2020-05-05T16:06:25.083 回答