我有一个关于字符串表达式评估的问题。目前我正在研究需要从存储在DB中的字符串计算数学表达式的项目,我想制作评估此字符串的C#方法,并且此函数将从添加到DB的存储过程或函数运行。所以问题是我想在我的C#函数中使用已经创建的解决方案,如NCalc或Jace.Net,但是如果我想从db运行它我需要将db(例如NCalc.dll或Jace.dll)添加到db部件。并且添加这些解决方案是相当有问题的,NCalc使用不安全的代码并且Sql服务器无法从此dll运行方法,而Jace需要许多额外的dll需要添加到DB,这是不可接受的解决方案。那么,如果有人知道可以添加到db并运行的工作表达式求值程序吗?请事先提供帮助。
我正在使用Microsoft SQL Server 2012(SP1) - 11.0.3128.0(X64)2)和.Net framework 4.5
答案 0 :(得分:0)
A。我认为您可以将JavaScript引擎嵌入您感兴趣的圈子中。
e.g。 http://jurassic.codeplex.com/ - 纯dotnet,一个dll,像馅饼一样简单(但仍需要WITH PERMISSION_SET = UNSAFE / EXTERNAL_ACCESS,我认为任何没有特别设计的CLR lib都需要UNSAFE,例如它足以让静态不读取领域成为UNSAFE,其他限制:http://msdn.microsoft.com/en-us/library/ms403273.aspx)。
B。不要忘记T-SQL也是动态语言。为什么你不能只在T-SQL中保存表达式?恕我直言Sql Server比任何可以通过CLR消耗调用的表达式求值程序更适合运行“Avg”。