SQL报错:未指定jsonStr的第1列列名,求解决方法
解决SQL子查询JSON结果列名缺失报错
报错原因
使用FOR JSON PATH生成JSON时,SQL Server会自动生成一个类似JSON_F52D2B61-18H1-11d1-B605-00825F49916B的默认列名,但这是系统内部临时名称,外层查询无法将其识别为合法列名,因此触发No column name was specified错误。
修复代码
给子查询返回的JSON结果显式指定列别名即可,两种写法任选:
写法一:在子查询别名后指定列名
SELECT * FROM ( SELECT TOP (10) * FROM myTbl FOR JSON PATH ) AS jsonStr(json_result)
写法二:在子查询内部直接命名JSON列
SELECT * FROM ( SELECT (SELECT TOP (10) * FROM myTbl FOR JSON PATH) AS json_result ) AS jsonStr
这样外层查询能识别到明确的列名,报错即可解决。
内容的提问来源于stack exchange,提问作者tsdn
相关产品推荐
相关产品推荐

