【问题标题】:Dealing with special characters in SQL OPENJSON WITH command?处理 SQL OPENJSON WITH 命令中的特殊字符?
【发布时间】:2020-08-24 04:58:22
【问题描述】:

我有一个 JSON 字符串,我尝试使用 OPENJSON WITH 将其导入我的 SQL Server 数据库,但我遇到了问题,因为我认为 JSON“字段名称”包含正斜杠。

为了获得起始值和结束值,我还需要做什么?目前我只是得到 NULLS...

DECLARE @JSONText NVarChar(max) = '[{
    "Labour Resource Name": "ABC Consulting",
    "Start Date/Time": "2020-07-06T06:30:00",
    "End Date/Time": "2020-07-06T10:30:00"
}]'

SELECT * 
FROM OPENJSON (@JSONText)
     WITH ([Labour Resource Name] NVarChar(512),
           [Start Date/Time] NVarChar(50),
           [End Date/Time] NVarChar(50)
          ) 

【问题讨论】:

    标签: json sql-server


    【解决方案1】:

    您不必修改输出列别名,而是可以为所有它们指定 JSON 路径:

    DECLARE @JSONText NVarChar(max) = '[{
        "Labour Resource Name": "ABC Consulting",
        "Start Date/Time": "2020-07-06T06:30:00",
        "End Date/Time": "2020-07-06T10:30:00"
    }]';
    
    SELECT j.* 
    FROM OPENJSON (@JSONText)
    WITH (
        [LabourResourceName] nvarchar(512) '$."Labour Resource Name"',
        [StartDateTime] nvarchar(50) '$."Start Date/Time"',
        [EndDateTime] nvarchar(50) '$."End Date/Time"'
    ) j;
    

    【讨论】:

      【解决方案2】:
      DECLARE @JSONText NVarChar(max) = '[{
          "Labour Resource Name": "ABC Consulting",
          "Start Date/Time": "2020-07-06T06:30:00",
          "End Date/Time": "2020-07-06T10:30:00"
      }]'
      
      SELECT * 
      FROM OPENJSON (REPLACE(@JSONText, N'Date/Time', N'Date\/Time'))
           WITH ([Labour Resource Name] NVarChar(512),
                 [Start Date/Time] NVarChar(50),
                 [End Date/Time] NVarChar(50)
                ) 
      

      【讨论】:

        猜你喜欢
        • 2021-02-25
        • 2021-12-26
        • 2018-09-24
        • 2017-03-19
        • 1970-01-01
        • 2014-05-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多