2016-04-03 16 views
0

MYSQLでこのようにsomethigを実行するにはどうすればよいですか?mysqlは指定された整数値で関数を評価します

SELECT MyFunction(x)ここで、x in(1,2,7,20,30);

単純なクエリのように見えますが、Oracleではこれを簡単に行うことができますが、これはMySQLでこれを行うためのトリックはありません。私の場合、1,2,7,20,30はテーブルから来ていないことに注意してください(そのキャストでは簡単ですが、単純な結合になります)。私の状況では、C#でクエリ(特に整数値)を生成してから、DB呼び出しを作成します。

すべてのアイデア?

答えて

1

出力例は助けるが、おそらくこのような何か....

Select myFunction(X) 
FROM (Select 1 UNION Select 2 union select 7 union select 20 union select 30)\ 

代替になります。Select a sequence between two numbers on MySQL

+0

私は最大10個の整数値を持つことになり、私の当面の状況のように、これは私の作品!私は大きなセットのためのクリーナーソリューションはないと思う50の値を言う?何度も不器用な "組合選択"の繰り返しを50回避ける方法? – shev72

+0

値は提供され、パターンベースではないので、ループを生成して生成することはできません。 Clumsyの組合選択は私がここで考えることができるすべてです....もし... max minを知っていれば、ループを作り、1-1000と言う集合を生成して、単にどこで言いますか...しかし私はそうではありません確かにそれはどんなクリーナーでもあります。 – xQbert

1

--PSEUDO ...

Select myFunction(X) 
FROM (Generate Table containing values Min to max of range passing in) 
where Value in (your list); 
ような何か

unionこれを行う方法です。

SELECT (x + 100) 
FROM (select 1 as x union select 2 union select 7 union select 20 union select 30) t; 

出力:

mysql> SELECT (x + 100) 
    -> FROM (select 1 as x union select 2 union select 7 union select 20 union select 30) t; 
+-----------+ 
| (x + 100) | 
+-----------+ 
|  101 | 
|  102 | 
|  107 | 
|  120 | 
|  130 | 
+-----------+ 
5 rows in set (0.00 sec) 
関連する問題