0

我们大量使用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)

所以我们希望解析器也能够解析它。

这是一个已知的错误?

4

0 回答 0