【问题标题】:Openjson expression sql 2016openjson表达式sql 2016
【发布时间】:2017-05-18 09:40:40
【问题描述】:

有什么方法可以像下面这样在打开的 json 中将路径指定为变量?

DECLARE @JSON NVARCHAR(MAX)

 set @JSON = '{ "amounts": [
    {
      "Charge_Id": "368",
      "Amount": "800",
      "FineType_Id": 3,
      "user_id": 2
    },
    {
      "Charge_Id": "368",
      "Amount": "600",
      "FineType_Id": 4,
      "user_id": 2
    }
  ]

  }';


DECLARE @counter int
DECLARE @expression NVARCHAR(50)
set @counter = 0
set @expression = ‘$.amounts[‘+CONVERT(NVARCHAR(10),@counter)+’]’

SELECT *
FROM OPENJSON(@JSON,@expression)
WITH(Charge_Id int, Amount money, FineType_Id int, user_id int)AS JSON

因为这会导致错误

消息 102,级别 15,状态 1,第 31 行附近的语法不正确 '@表达'。消息 319,级别 15,状态 1,第 32 行语法不正确 在关键字'with'附近。如果这个语句是公用表 表达式、xmlnamespaces 子句或更改跟踪上下文 子句,前面的语句必须以分号结束。

感谢您的帮助

【问题讨论】:

    标签: sql sql-server json sql-server-2016


    【解决方案1】:

    It looks like the compatibility level doesn't match with SQL 2016。您需要检查并更改它。致view or change your compatibility level

    1. 连接到 SQL Server 数据库引擎的相应实例后,在对象资源管理器中,单击服务器名称。

    2. 展开数据库,并根据数据库选择用户数据库或展开系统数据库并选择系统数据库。

    3. 右键单击数据库,然后单击“属性”。

      “数据库属性”对话框打开。

      在“选择页面”窗格中,单击“选项”。

    4. 当前兼容级别显示在兼容级别列表框中。

    5. 要更改兼容性级别,请从列表中选择其他选项。选项包括 SQL Server 2008 (100)、SQL Server 2012 (110)、SQL Server 2014 (120)、SQL Server 2016 (130) 和 SQL Server 2017 (140)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多