Sql server 为什么Microsoft.SqlServer.Transact-SQL.ScriptDom.TSqlParser无法解析简单有效的表达式?
我们正在大量使用Microsoft.SqlServer.Transact-SQL.ScriptDom来处理一些SQL脚本 我们的理解是解析器应该是完全逼真的 但是,我们最近发现了以下错误:Sql server 为什么Microsoft.SqlServer.Transact-SQL.ScriptDom.TSqlParser无法解析简单有效的表达式?,sql-server,sql-parser,scriptdom,tsql-parser,Sql Server,Sql Parser,Scriptdom,Tsql Parser,我们正在大量使用Microsoft.SqlServer.Transact-SQL.ScriptDom来处理一些SQL脚本 我们的理解是解析器应该是完全逼真的 但是,我们最近发现了以下错误: using Microsoft.SqlServer.TransactSql.ScriptDom; var parser = new TSql150Parser(true); string expr = @"IIF( (IIF(1 = 1, 1, NULL)) IS NULL, 1, 0)"; var r
using Microsoft.SqlServer.TransactSql.ScriptDom;
var parser = new TSql150Parser(true);
string expr = @"IIF( (IIF(1 = 1, 1, NULL)) IS NULL, 1, 0)";
var res = parser.ParseExpression(new StringReader(expr), out var errors);
bool isSuccess = errors.Count == 0;
预期结果:isSuccess为true
实际结果:isSuccess为false
在SQL server works中运行以下查询:SELECT IIF((IIF(1=1,1,NULL))为NULL,1,0)
因此,我们希望解析器也能够解析它
这是一个已知的错误吗?1)在将语句发送到解析器之前,您是否尝试将ELECT添加到语句中,这会改变什么?2) 如果不是0,errors.count的值是多少?3) 你看过错误报告了吗?3.1)若否,原因为何?3.2)如果是,返回的错误消息是什么?SELECT不是必需的,因为我使用.ParseExpression而不是.Parse。只有一个错误“附近的语法不正确”。“非常确定这是一个错误。”。考虑一下这里的投票: