OPENJSON - 关键字“with”附近的语法不正确

Sim*_*mon 8 t-sql sql-server json

想知道是否有人能找出问题所在,当我从 [HubSpotCache] 之外的另一个数据库(仍在同一个 SQL 实例中)读取表时,我不断收到此错误。

消息 319,级别 15,状态 1,第 33
行关键字“with”附近的语法不正确。如果此语句是公用表表达式、xmlnamespaces 子句或更改跟踪上下文子句,则前一个语句必须以分号终止。

SELECT
    J.label
FROM
    [HubSpotCache].dbo.[ContactProperties] C
CROSS APPLY 
    OPENJSON(C.[OptionsAggregate])
    WITH (
            label NVARCHAR(100) N'$."value"'
         ) AS J
WHERE 
    ISJSON(C.[OptionsAggregate]) > 0
Run Code Online (Sandbox Code Playgroud)

这是表的 OptionsAggregate 列中的值

[
  {
    "label": "China",
    "value": "China",
    "displayOrder": -1,
    "doubleData": 0.0,
    "hidden": false,
    "readOnly": false
  },
  {
    "label": "Singapore",
    "value": "Singapore",
    "displayOrder": -1,
    "doubleData": 0.0,
    "hidden": false,
    "readOnly": false
  }
]
Run Code Online (Sandbox Code Playgroud)

小智 12

您使用的是哪个版本的 SQL Server?如果您有正确的 SQL Server 版本,那么很可能是Compatibility Level因为OPENJSON 需要兼容性级别 130,因此请检查您的兼容性级别,如果不是 130,请将其设置为 130 并尝试

  • ```ALTER DATABASE <DatabaseName> SET COMPATIBILITY_LEVEL = 130``` 设置兼容性级别 (3认同)