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

为何Microsoft.SqlServer.Management.SqlParser解析SQL生成含SqlTableValuedFunctionRefExpression的AST

问题原因

这是使用的SQL解析器对SQL Server特有省略语法适配不足导致的,具体逻辑如下:

  1. 你写的Groups (nolock)属于SQL Server的兼容写法:表提示(nolock)省略了前置的WITH关键字,标准ANSI SQL以及大多数通用SQL解析器识别的表提示写法为Groups WITH (nolock),省略WITH属于SQL Server独有的非标准兼容语法。
  2. 不带WITH的表名 (参数)结构,和表值函数调用的语法格式完全一致,解析器无法区分该结构是「省略WITH的表提示」还是「表值函数调用」,所以默认匹配了优先级更高的表值函数调用规则,将该节点识别为SqlTableValuedFunctionRefExpression。

解决方案

  • 写法层面补全WITH关键字,调整查询为:
SELECT ShortName FROM Groups WITH (nolock)

调整后解析器就能正确识别为「普通表引用+表提示」的结构,不会再误判为表值函数调用。

  • 如果你需要兼容这种SQL Server特有的省略写法,可以更换为适配SQL Server方言的专用SQL解析器,这类解析器会内置对省略WITH表提示的识别规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:36:03