我们大量使用Microsoft.SqlServer.TransactSql.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 res = parser.ParseExpression(new StringReader(expr), out var errors);
bool isSuccess = errors.Count == 0;
预期结果:isSuccess 为真
实际结果:isSuccess 为假
在 SQL Server 中运行以下查询有效: SELECT IIF( (IIF(1 = 1, 1, NULL)) IS NULL, 1, 0)
所以我们希望解析器也能够解析它。
这是一个已知的错误?