如何使用表中的相应值替换字符串中的ID?

时间:2013-05-14 14:05:15

标签: sql-server tsql sql-server-2008-r2

我在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中执行它,这不是太乱,我宁愿走那条路。

2 个答案:

答案 0 :(得分:2)

你的Items表应该有一个Foriegn Key to Rules表,那么加入这两个表就很简单了。但是,如果可以从多个规则引用项目,则需要一个允许您具有多对多引用的XRef表。使用CLR执行REGEX表达式会严重降低Select语句的速度。我将仔细研究重组表以支持您的应用程序所需的内容。

答案 1 :(得分:1)

有一种称为CLR存储过程的东西。 MSDN CLR Stored Procedure

所以你可以使用.net中的正则表达式。但它并不快。你可以在sql中使用字符串函数做一个简单的规则,但是更复杂的规则会让你感到非常痛苦。想想我自己很想在sql之外做这件事,如果它有很多的话。