2014-10-01 87 views
2

我需要对阶段性数据(在各种表中)进行检查。数据字段值必须根据评估为布尔值的(业务)规则进行检查。用户可以用逻辑表达式来定义这些规则:其中A,B,C等(其中A,B,C分别为A,B,A和B)字段值)。使用SQL Server(CLR)进行逻辑/布尔表达式评估

规则将作为字符串与规则适用的列一起放在表中。我已经制定了如何在规则中获取字段值以及如何将规则应用于分阶段数据。 (我也使用RegEx来测试-custom-数据类型,我将舞台转换成类似于EAV的表格,并且加入这些列名称的规则。)

我不是.Net程序员,所以构建解析器而评估者对我来说是不可能的。 我正在寻找(保存)解决方案来评估逻辑/布尔表达式运行时。我打算将评估者放入CLR中,并将其用作函数(就像我对RegEx所做的那样)。我已经看过NCALC(不安全),Flee(过时)等,但是我找不到用于评估这些表达式的最新解决方案。 (将字符串解析为像IFF,IF,CASE这样的SQL表达式看起来似乎有点过分。)

任何建议。我可能在这里错过了一些明显的东西。

回答

0

声明:我项目Eval SQL.NET

评估和演示SQL.NET允许直接在T-SQL中使用的参数来评估布尔表达式如果语法是用C#兼容的所有者,

实施例

-- SELECT 1 (true) 
SELECT SQLNET::New('A > B && B < C') 
.Val('A', 3) 
.Val('B', 1) 
.Val('C', 2).EvalBit() 

-- SELECT 0 (false) 
SELECT SQLNET::New('A > B && B < C') 
.Val('A', 3) 
.Val('B', 2) 
.Val('C', 1).EvalBit() 
相关问题