【发布时间】:2019-04-13 20:16:03
【问题描述】:
想知道是否有人能找出问题所在,当我从 [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
}
]
【问题讨论】:
-
您使用哪个版本的 SQL Server?
-
检查数据库的兼容级别:SELECT name,compatibility_level FROM sys.databases - 至少要130才能实现openjson
-
标题不反映问题。这与 CTE 无关。
-
“当查询在 [HubSpotCache] 数据库中运行时有效,但当它来自同一 SQL 实例上的另一个数据库时无效。” 然后是您正在运行查询的数据库on 肯定有一个不支持您正在使用的语法的兼容性设置。
-
这不是重复的,而是it's related
标签: json sql-server tsql