- 締切済み
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#)
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>select a + b from (select 1 as a, 2 as b) >select a from (select 1 as a) > >はNGです。 うーん、残念。 あとはXMLなんかでテーブル作っちゃうかな。
- taka_tetsu
- ベストアンサー率65% (1020/1553)
>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) なんてのはどうなんでしょう?
補足
クエリアナライザで確認してみました。 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)
>動的に数式を計算する方法を探しています。 でしたら、スクリプトエンジンを使うのが楽かと。 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のパラメータとして渡すにしても、そのままの書式じゃだめなはずなんで。 #本物のテーブルじゃなくてもかまわないですけど。
お礼
回答ありがとうございます。 > 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()) でいいけど、実戦では正規表現で置換する必要かも。
お礼
自己解決しました。 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