1

我在 SQL Server 2008 R2 数据库中有 2 个表 - 规则和项目

规则记录具有 Id 和 Expression,例如:

  1, "(1 AND 2)"

Items 记录具有 Id 和 Name,例如:

  1, "Foo" 
  2, "Bar"

有没有办法在单个查询中选择所有规则表达式并用它们的名称替换项目 ID?

SELECT Magic(Expression) FROM Rules WHERE Id = 1

会给我"(Foo AND Bar)"

我正在考虑做一个.net 控制台应用程序,所以我可以利用正则表达式,但如果有办法在 SQL 中做到这一点,这不是太混乱,我宁愿走那条路。

4

2 回答 2

2

您的 Items 表应该确实有一个规则表的外键,那么加入 2 个表将是一件简单的事情。但是,如果可以从多个规则中引用项目,则您需要一个外部参照表,该表允许您进行多对多引用。使用 CLR 执行 REGEX 表达式会严重减慢您的 Select 语句。我会仔细研究重组表以支持您的应用程序需要的内容。

于 2013-05-14T14:31:04.163 回答
1

有一种东西叫做 CLR 存储过程。 MSDN CLR 存储过程

所以你可以使用.net的正则表达式。虽然它并不快。你可以用 sql 中的字符串函数做一个简单的规则,但更复杂的规则会给你带来严重的痛苦。如果有很多的话,我想我会很想在 sql 之外自己做。

于 2013-05-14T14:32:21.150 回答