You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用FOR JSON PATH/AUTO时遇'Incorrect syntax near JSON'错误求助

解决FOR JSON PATH/AUTO报错"Incorrect syntax near JSON"的问题

嘿,这个问题我之前帮同事排查过,大概率是SQL Server版本不兼容或者数据库兼容性级别设置过低导致的,咱们一步步来解决:

1. 检查你的SQL Server版本是否支持FOR JSON

FOR JSON 是SQL Server 2016(版本号13.x)及以后版本才引入的功能,如果你的版本低于2016,自然会报语法错误。

你可以运行这条查询查看当前版本:

SELECT @@VERSION;

如果返回的版本号低于13.x(比如12.x对应SQL Server 2014),那你需要升级到SQL Server 2016或更高版本才能使用FOR JSON语法。

2. 检查数据库兼容性级别

即使你的SQL Server版本是2016+,如果目标数据库的兼容性级别设置为低于130,也会导致FOR JSON无法被识别。

步骤1:查看当前数据库的兼容性级别

运行这条查询(替换YourDatabaseName为你的数据库名):

SELECT name, compatibility_level 
FROM sys.databases 
WHERE name = 'YourDatabaseName';

步骤2:升级兼容性级别到130或更高

如果兼容性级别低于130,执行这条语句升级:

ALTER DATABASE YourDatabaseName 
SET COMPATIBILITY_LEVEL = 130;

(注:130对应SQL Server 2016,140对应2017,以此类推,根据你的SQL Server版本选择合适的级别)

3. 验证你的SQL代码本身

其实你的代码写法是完全正确的:

SELECT TOP 5 recid As Id, FirstName, LastName, status As 'Info.status', state As 'Info.state' 
FROM dbo.Consumers 
FOR JSON PATH

当环境满足要求后,这条查询应该会返回嵌套结构的JSON结果,比如:

[{"Id":1,"FirstName":"xxx","LastName":"xxx","Info":{"status":"xxx","state":"xxx"}},...]

如果还是有问题,可以先运行一个极简测试语句验证环境:

SELECT 'Alice' AS FirstName, 'Smith' AS LastName FOR JSON PATH;

如果这个能正常返回JSON,说明环境没问题,再回到你的原查询排查其他细节(比如表名、字段名是否正确)。

内容的提问来源于stack exchange,提问作者Jiah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:24:47