• 締切済み

SQLServerで変数を含んだ数式の演算

動的に数式を計算する方法を探しています。 SQLServerのエンジンを使うのが簡単そうです。 ADO.NETでSELCECT文を投げることにより、数式を計算することは可能です。 SELECT 1+2 質問は、変数を含んだ数式をSELECT文で計算することは出来るでしょうか? int a = 1; //変数 int b = 2; //変数 string shiki = "a + b"; //変数を含んだ数式 で3を求めたいです。 Windows2000Server MSDE2000A VS.NET2003(Webアプリ/C#)

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>select a + b from (select 1 as a, 2 as b) >select a from (select 1 as a) > >はNGです。 うーん、残念。 あとはXMLなんかでテーブル作っちゃうかな。

todo36
質問者

お礼

自己解決しました。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_set-set_0vs5.asp の例Aをヒントに declate @a int,@b int;set @a=1;set @b=2;select @a+@b

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

>select 1 as a, 2 as b, a + b as result 私はADO.NETがよくわからないのですが、SELECT文のfrom句って要らないんですか?もしくはつけてもいいんですか? 両方OKなんでしたら select a + b from (select 1 as a, 2 as b) なんてのはどうなんでしょう?

todo36
質問者

補足

クエリアナライザで確認してみました。 select 1+2 select 1 as a, 2 as b はOKです。 select a + b from (select 1 as a, 2 as b) select a from (select 1 as a) はNGです。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>動的に数式を計算する方法を探しています。 でしたら、スクリプトエンジンを使うのが楽かと。 msscript.ocxを参照設定して使います。 VBScriptとかJScriptを文字列として渡すことで実行できます。 http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200406_04060029.html の真ん中くらいにVB.NETからJScriptを呼び出しています。 詳しくはocxのヘルプを。 で、こちらだと、 >質問は、変数を含んだ数式をSELECT文で計算することは出>来るでしょうか? > >int a = 1; //変数 >int b = 2; //変数 >string shiki = "a + b"; //変数を含んだ数式 > >で3を求めたいです。 変数に入っている値をどうするかがポイントになります。 方法としては、 a,bのフィールドを持つテーブルを作成して値をinsertしておく必要があるんじゃないかと。 ADO.NETのパラメータとして渡すにしても、そのままの書式じゃだめなはずなんで。 #本物のテーブルじゃなくてもかまわないですけど。

todo36
質問者

お礼

回答ありがとうございます。 > msscript.ocx 凄い!初めて知りました。いろいろ遊べそうですね。 しかし、今回は .NETで完結したいので採用するのは見送ります。 > a,bのフィールドを持つテーブルを作成して値をinsertしておく必要があるんじゃないかと。 エラーになるけど、こんな感じのselect文で出来るかなと期待したのですが.. select 1 as a, 2 as b, a + b as result プログラム側で変数を置換する方向で考えます。 とりあえず、 shiki.Replace("a", a.ToString()).Replace("b", b.ToString()) でいいけど、実戦では正規表現で置換する必要かも。

関連するQ&A