1

SQL Server 2008 R2 データベースに 2 つのテーブルがあります - ルールとアイテム

Rules レコードには 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テーブルには、RulesテーブルへのForiegn Keyが実際にあるはずです.2つのテーブルを結合するのは簡単なことです. ただし、アイテムが複数のルールから参照できる場合は、多対多の参照を可能にする XRef テーブルが必要になります。CLR を使用して REGEX 式を実行すると、Select ステートメントが大幅に遅くなります。アプリケーションのニーズをサポートするためにテーブルを再構築する方法を詳しく見ていきます。

于 2013-05-14T14:31:04.163 に答える
1

CLR ストアド プロシージャと呼ばれるものがあります。 MSDN CLR ストアド プロシージャ

したがって、.net から正規表現を使用できます。速くはないけど。SQL の文字列関数を使用してそのような単純なルールを実行することもできますが、より複雑なルールを使用すると深刻な問題が発生します。たくさんある場合は、自分でSQLの外でそれをやりたくなるだろうと思います。

于 2013-05-14T14:32:21.150 に答える