アプリ版:「スタンプのみでお礼する」機能のリリースについて

動的に数式を計算する方法を探しています。
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#)

A 回答 (3件)

>動的に数式を計算する方法を探しています。



でしたら、スクリプトエンジンを使うのが楽かと。
msscript.ocxを参照設定して使います。
VBScriptとかJScriptを文字列として渡すことで実行できます。

http://homepage1.nifty.com/MADIA/vb/vb_bbs2/2004 …

の真ん中くらいにVB.NETからJScriptを呼び出しています。
詳しくはocxのヘルプを。


で、こちらだと、
>質問は、変数を含んだ数式をSELECT文で計算することは出>来るでしょうか?
>
>int a = 1; //変数
>int b = 2; //変数
>string shiki = "a + b"; //変数を含んだ数式
>
>で3を求めたいです。

変数に入っている値をどうするかがポイントになります。
方法としては、
a,bのフィールドを持つテーブルを作成して値をinsertしておく必要があるんじゃないかと。

ADO.NETのパラメータとして渡すにしても、そのままの書式じゃだめなはずなんで。

#本物のテーブルじゃなくてもかまわないですけど。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

> 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())
でいいけど、実戦では正規表現で置換する必要かも。

お礼日時:2005/03/25 12:52

>select a + b from (select 1 as a, 2 as b)


>select a from (select 1 as a)
>
>はNGです。

うーん、残念。
あとはXMLなんかでテーブル作っちゃうかな。
    • good
    • 0
この回答へのお礼

自己解決しました。
http://www.microsoft.com/japan/msdn/library/defa …
の例Aをヒントに

declate @a int,@b int;set @a=1;set @b=2;select @a+@b

お礼日時:2005/04/04 16:20

>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です。

補足日時:2005/03/25 14:44
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!