2016-04-03 8 views
0

Wie kann ich sowas in MYSQL machen?mysql Funktion bei angegebenen ganzzahligen Werten auswerten

SELECT MyFunction (x) mit x in (1,2,7,20,30);

Scheint wie eine einfache Abfrage für diese und in Oracle vorhanden sein sollte Ich kann es einfach mit der Dual-Tabelle tun, aber ich sehe keinen Trick, dies in MySQL zu tun. Beachten Sie, dass in meinem Fall 1,2,7,20,30 NICHT von einer Tabelle kommen (in dieser Besetzung wäre es einfach, nur eine einfache Verbindung). In meiner Situation erzeuge ich die Abfrage (insbesondere die Integer-Werte) in C# und mache dann den DB Call.

Irgendwelche Ideen?

Antwort

1

Beispiel Ausgang würde helfen, aber vielleicht so etwas ....

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

Alternative:

--PSEUDO ...

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

Etwas wie: Select a sequence between two numbers on MySQL

+0

das funktioniert für mich wie in meiner unmittelbaren Situation werde ich max 10 Integer-Werte haben! Ich denke, es gibt keine sauberere Lösung für größere Sätze sagen 50 Werte? Ein Weg, der die etwas ungeschickte "union select" Wiederholung 50 mal vermeidet? – shev72

+0

Da die Werte angegeben werden und nicht patternbasiert sind, können wir keine Schleife erzeugen, um sie zu erzeugen. die Clumsy union select ist alles was ich mir hier vorstellen kann .... Es sei denn ... wir kennen min max, dann könnten wir loopen und eine menge sagen 1-1000 und dann einfach sagen wo in ... aber ich bin es nicht Sicher, das ist sauberer. – xQbert

1

union ist eine Möglichkeit, das zu tun.

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

Ausgang:

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) 
Verwandte Themen