我在SQL Server 2008 R2数据库中有两个表 - 规则和项目
规则记录包含Id和Expression,例如:
1, "(1 AND 2)"
项目记录具有Id和名称,例如:
1, "Foo"
2, "Bar"
有没有办法选择所有规则表达式并在单个查询中用项目ID替换它们的名称?
SELECT Magic(Expression) FROM Rules WHERE Id = 1
会给我"(Foo AND Bar)"
我正在考虑使用.net控制台应用程序,所以我可以利用Regex,但是如果有一种方法可以在SQL中执行它,这不是太乱,我宁愿走那条路。
答案 0 :(得分:2)
你的Items表应该有一个Foriegn Key to Rules表,那么加入这两个表就很简单了。但是,如果可以从多个规则引用项目,则需要一个允许您具有多对多引用的XRef表。使用CLR执行REGEX表达式会严重降低Select语句的速度。我将仔细研究重组表以支持您的应用程序所需的内容。
答案 1 :(得分:1)
有一种称为CLR存储过程的东西。 MSDN CLR Stored Procedure
所以你可以使用.net中的正则表达式。但它并不快。你可以在sql中使用字符串函数做一个简单的规则,但是更复杂的规则会让你感到非常痛苦。想想我自己很想在sql之外做这件事,如果它有很多的话。