OPENJSON - 关键字'with'附近语法不正确。

6

想知道有没有人能够找出这个代码的问题,当我从除[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

这是表中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
  }
]

2
你使用的 SQL Server 版本是哪个? - sticky bit
1
检查数据库的兼容性级别:SELECT name,compatibility_level FROM sys.databases - 它应该至少为130,才能实现openjson。 - Søren Kongstad
3
标题与问题不符。这与慢性创伤性脑损伤无关。 - HoneyBadger
5
如果查询在[HubSpotCache]数据库中运行时有效,但在同一SQL实例上的其他数据库中运行时无效,则说明您正在运行查询的数据库肯定具有不支持您使用的语法的兼容性设置。 - Thom A
1
这不是一个重复的问题,但是它与以下问题相关:https://stackoverflow.com/questions/54645938/sql-server-2014-type-date-is-not-a-defined-system-type/54648281#54648281 - Zohar Peled
显示剩余3条评论
1个回答

10

您正在使用哪个版本的SQL Server?如果您使用的是正确的SQL Server版本,那么最有可能是由于"兼容性级别"不符合要求,因为OPENJSON需要兼容性级别为130,请检查您的兼容性级别,如果不是130,请将其设置为130并尝试操作。


1
ALTER DATABASE <DatabaseName> SET COMPATIBILITY_LEVEL = 130 用于设置兼容性级别。 - A5H1Q

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接